商城网站开发报价单,建设工程合同和承揽合同的区别,竞价培训,企业网站建设费怎么核算概述
Room是谷歌公司推出的数据库处理框架#xff0c;该框架同样基于SQLite#xff0c;但它通过注解技术极大简化了数据库操作#xff0c;减少了原来相当一部分编码工作量。在使用Room之前#xff0c;要先修改模块的build.gradle文件#xff0c;往dependencies节点添加下…概述
Room是谷歌公司推出的数据库处理框架该框架同样基于SQLite但它通过注解技术极大简化了数据库操作减少了原来相当一部分编码工作量。在使用Room之前要先修改模块的build.gradle文件往dependencies节点添加下面两行配置标识导入指定版本的Room库 implementation ‘androidx.room:room-runtime:2.2.5’ annotationProcessor ‘androidx.room:room-compiler:2.2.5’ annotationProcessor注解处理器
使用步骤
以录入书籍信息为例使用Room框架的编码过程分为下列五部
1、编写书籍信息表对应的实体类该类添加“Entity”注解
package com.example.study_android.entity;import androidx.room.Entity;
import androidx.room.PrimaryKey;Entity
public class BookInfo {PrimaryKey(autoGenerate true)private int id;public String name;public String author;public double price;Overridepublic String toString() {return BookInfo{ id id , name name \ , author author \ , price price };}
}
2、编写书籍信息表对应的持久化类该类添加“Dao”注解
Dao
public interface BookDao {Insertvoid insert(BookInfo... book);Deletevoid delete(BookInfo... book);Query(DELETE FROM BookInfo)void deleteAll();Updateint update(BookInfo... book);Query(SELECT * FROM BookInfo)ListBookInfo queryAll();Query(SELECT * FROM BookInfo WHERE name:name ORDER BY id DESC limit 1)BookInfo queryByName(String name);
}
3、编写书籍信息表对应的数据库类该类从RoomDatabase派生而来并添加“Database”注解
package com.example.study_android.database;import androidx.room.Database;
import androidx.room.RoomDatabase;import com.example.study_android.dao.BookDao;
import com.example.study_android.entity.BookInfo;Database(entities {BookInfo.class}, version 1, exportSchema true)
public abstract class BookDatabase extends RoomDatabase {// 获取该数据库中某张表的持久化对象public abstract BookDao bookDao();
}entities表示该数据库有哪些表exportSchema表示是否导出数据库信息的json串建议设为false若设为true还需指定json文件的保存路径
在build.gradle中添加导出路径 javaCompileOptions {annotationProcessorOptions {//指定数据库schema导出的位置arguments mapOf(room.schemaLocation to $projectDir/schemas,room.incremental to true)}}4、在自定义的Application类中声明书籍数据库的唯一实例
public class MyApplication extends Application {private static MyApplication mApp;// 声明一个书籍数据库对象private BookDatabase bookDatabase;public static MyApplication getInstance() {return mApp;}// App启动时调用Overridepublic void onCreate() {super.onCreate();mApp this;// 构建书籍数据库的实例bookDatabase Room.databaseBuilder(this, BookDatabase.class, book)// 允许迁移数据库发生数据库变更时Room默认删除原数据库再创建新数据库如此一来原来的记录会丢失故而要改为迁移方式以便保存原有记录.addMigrations()// 允许主线程中操作数据库Room默认不能在主线程中操作数据库.allowMainThreadQueries().build();}public BookDatabase getBookDB() {return bookDatabase;}
}5、在操作书籍信息表的地方获取数据表的持久化对象
bookDao MyApplication.getInstance().getBookDB().bookDao();Overridepublic void onClick(View view) {String name et_book_name.getText().toString();String author et_author.getText().toString();String price et_price.getText().toString();switch (view.getId()) {case R.id.btn_save:BookInfo book new BookInfo();book.name name;book.author author;book.price Double.parseDouble(price);bookDao.insert(book);ToastUtil.show(this, 保存成功);break;case R.id.btn_del:BookInfo b2 new BookInfo();b2.id 1;bookDao.delete(b2);break;case R.id.btn_edit:BookInfo b3 new BookInfo();BookInfo b4bookDao.queryByName(name);b3.id b4.id;b3.name name;bookDao.update(b3);break;case R.id.btn_query:ListBookInfo list bookDao.queryAll();StringBuilder sb new StringBuilder();for (BookInfo b : list) {sb.append(b.toString());}tv_result.setText(sb);break;}}案例代码