第一步
导入依赖
implementation "androidx.room:room-runtime:2.2.5"
annotationProcessor "androidx.room:room-compiler:2.2.5"
第二步
创建bean类加上@Entity注解
package com.wei.mvvm2.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
/**
* @author: wangluming
* @date: On 2020/10/1
*/
@Entity(tableName = "tb_finalce")
public class FinalceEntity {
/**
* id : 25
* productname : 理财产品24
* productdesc : 理财产品24
* producttype : 1
* yearrate : 0.09
* totalamount : 1.0E7
* saleamount : 0.0
* labels :
* lockdays : 14
* minbugamount : 1000.0
* isnew : 2
* startlevel : 4.0
*/
@PrimaryKey(autoGenerate = true)
public int uid;
@ColumnInfo
private int id;
@ColumnInfo
private String productname;
@ColumnInfo
private String productdesc;
@ColumnInfo
private int producttype;
@ColumnInfo
private double yearrate;
@ColumnInfo
private double totalamount;
@ColumnInfo
private double saleamount;
@ColumnInfo
private String labels;
@ColumnInfo
private int lockdays;
@ColumnInfo
private double minbugamount;
@ColumnInfo
private int isnew;
@ColumnInfo
private double startlevel;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProductname() {
return productname;
}
public void setProductname(String productname) {
this.productname = productname;
}
public String getProductdesc() {
return productdesc;
}
public void setProductdesc(String productdesc) {
this.productdesc = productdesc;
}
public int getProducttype() {
return producttype;
}
public void setProducttype(int producttype) {
this.producttype = producttype;
}
public double getYearrate() {
return yearrate;
}
public void setYearrate(double yearrate) {
this.yearrate = yearrate;
}
public double getTotalamount() {
return totalamount;
}
public void setTotalamount(double totalamount) {
this.totalamount = totalamount;
}
public double getSaleamount() {
return saleamount;
}
public void setSaleamount(double saleamount) {
this.saleamount = saleamount;
}
public String getLabels() {
return labels;
}
public void setLabels(String labels) {
this.labels = labels;
}
public int getLockdays() {
return lockdays;
}
public void setLockdays(int lockdays) {
this.lockdays = lockdays;
}
public double getMinbugamount() {
return minbugamount;
}
public void setMinbugamount(double minbugamount) {
this.minbugamount = minbugamount;
}
public int getIsnew() {
return isnew;
}
public void setIsnew(int isnew) {
this.isnew = isnew;
}
public double getStartlevel() {
return startlevel;
}
public void setStartlevel(double startlevel) {
this.startlevel = startlevel;
}
@Override
public String toString() {
return "FinalceEntity{" +
"id=" + id +
", productname='" + productname + '\'' +
", productdesc='" + productdesc + '\'' +
", producttype=" + producttype +
", yearrate=" + yearrate +
", totalamount=" + totalamount +
", saleamount=" + saleamount +
", labels='" + labels + '\'' +
", lockdays=" + lockdays +
", minbugamount=" + minbugamount +
", isnew=" + isnew +
", startlevel=" + startlevel +
'}';
}
}
@Entity是该数据库表的注解可以指定表名tableName不指定表名则默认是该类的类名 @PrimaryKey是主键注解该注解有一个属性 autoGenerate(是否自增)默认是false 主键的字段访问修饰符为public 其他字段标注注解为 @ColumnInfo
第三步
创建DAO层(里面编写增删改查方法)
package com.wei.mvvm2.model.dao;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import com.wei.mvvm2.entity.FinalceEntity;
import java.util.List;
/**
* @author: wangluming
* @date: On 2020/10/13
*/
@Dao
public interface FinalcleDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertFinalce(List<FinalceEntity> entites);
@Query("select * from tb_finalce where producttype = :type limit (:currentPage*:pagesize),:pagesize ")
List<FinalceEntity> getFinalce(int type, int currentPage, int pagesize);
}
该层加上@Dao注解修饰 提供增删改查接口 增加方法用@Insert修饰 里面属性onConflict = OnConflictStrategy.REPLACE为添加的数据相同的话则直接替换 @Query注解里面写查询的sql语句
第四步
数据库实例
package com.wei.mvvm2.model.database;
import androidx.room.Database;
import androidx.room.RoomDatabase;
import com.wei.mvvm2.entity.FinalceEntity;
import com.wei.mvvm2.model.dao.FinalcleDao;
/**
* @author: wangluming
* @date: On 2020/10/13
*/
@Database(entities = {FinalceEntity.class},version = 1)
public abstract class FinalceDataBase extends RoomDatabase {
public abstract FinalcleDao finalcleDao();
}
该层为一个抽象类 继承RoomDatabase 用@Database注解修饰 entities属性为表的class文件 他是一个容器里面可以添加多个表的.class文件 必须加上version属性 里面加上FinalcleDao 的抽象方法
第五步
用单例简单封装ROOM数据库工具类
package com.wei.mvvm2.model.database;
import androidx.room.Room;
import com.wei.mvvm2.MyApplication;
/**
* @author: wangluming
* @date: On 2020/10/13
*/
public class FinalcelDBHelper {
private static FinalcelDBHelper instance = new FinalcelDBHelper();
private final FinalceDataBase finalcle;
private FinalcelDBHelper(){
finalcle = Room.databaseBuilder(MyApplication.getContext(), FinalceDataBase.class, "finalcle").build();
}
public static FinalcelDBHelper getInstance() {
return instance;
}
public FinalceDataBase getDB(){
return finalcle;
}
public void closeDB(){
if (finalcle!=null&&finalcle.isOpen()){
finalcle.close();
}
}
}
在构造方法中创建该数据库实例Room数据库提供的建造者方法databaseBuilder第一个参数为上下文第二个参数为该数据库实例的class文件 第三个参数为数据库名称 提供两个方法一个是获取数据库对象,关闭数据库方法
版权声明:本文为m0_46322939原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。