Room 数据保存简单使用
一、说明
Room是一个SQLite抽象层,使用更加简单,通过注解的方式标记相关功能,编译时自动生成响应的 impl 实现类,具有丰富的编译时校验,错误提示。
类注解:
- @Entity:映射为数据库中的一张表。
- @Dao:即 Data Access Objects,数据访问对象。
- @Database:数据库,标注的类必须是抽象类,在注解中添加与数据库关联的表,包含使用 @Dao 注解标记的类的抽象方法。
类内注解:
- @PrimaryKey():标识主键。
- @NonNull:字段非空标识。
- @ColumnInfo(“XXX”):字段名。
- @Insert():插入方法。
- @Query():查询方法。
- @Delete:删除方法。
- @Ignore:忽视该方法或字段。
二、使用
- 添加依赖
在官网找合适版本的依赖。(Room 依赖极易出错) - 使用注解自定义实体类
@Entity(tableName = "fruit")
public class Fruit {
@PrimaryKey(autoGenerate = true)
public Integer id;
@ColumnInfo(name = "fruit_name")
public String fruitName;
@ColumnInfo(name = "fruit_type")
public String fruitType;
@ColumnInfo(name = "fruit_price")
public Integer fruitPrice;
@ColumnInfo(name = "fruit_num")
public Integer fruitNum;
@Ignore
public Fruit(Integer id, String fruitName, String fruitType, Integer fruitPrice, Integer fruitNum) {
this.id = id;
this.fruitName = fruitName;
this.fruitType = fruitType;
this.fruitPrice = fruitPrice;
this.fruitNum = fruitNum;
}
public Fruit() {
}
}
- 自定义 Dao 接口
@Dao
public interface MyDAO {
/**参数可为List**/
//返回插入的 rowId 值,long 型
@Insert
long insertFruit(Fruit fruit);
//返回受影响的行数
@Delete
int deleteFruit(Fruit fruit);
//返回受影响的行数
@Update(entity = Fruit.class)
int updateFruit(Fruit fruit);
//返回查询的数据
@Query("select * from fruit;")
List<Fruit> selectAllFruit();
}
- 自定义 Database 抽象类
@Database(version = 1,entities = {Fruit.class},exportSchema = false)
public abstract class MyDatabase extends RoomDatabase {
public abstract MyDAO myDAO();
}
- 在想要的位置进行数据库的操作,该位置需要拥有上下文 Context
//获取 Dao,与数据库进行操作
MyDatabase database = Room.databaseBuilder(getApplicationContext(),MyDatabase.class,"database-name").build();
MyDAO dao = database.myDAO();
//添加 Fruit
dao.insertFruit(new Fruit(1,"橘子","橘子",10,120));
//查找 Fruit
List<Fruit> fruits = dao.selectAllFruit();
Fruit fruit = new Fruit();
if(fruits.size() > 0){
fruit = fruits.get(0);
}
Log.i(TAG,"初始数据库中Fruit为:" + fruit );
//修改 Fruit
fruit.setFruitName("苹果");
fruit.setFruitType("苹果");
dao.updateFruit(fruit);
//查找 Fruit
List<Fruit> fruitList = dao.selectAllFruit()
Fruit f = new Fruit();
if(fruits.size() > 0){
fruit = fruits.get(0);
}
Log.i(TAG,"修改后的数据 Fruit 为:" + f);
//删除 Fruit
dao.deleteFruit(f);
//查找 Fruit
List<Fruit> list = dao.selectAllFruit();
Fruit fi = new Fruit();
if(fruits.size() > 0){
fruit = fruits.get(0);
}
Log.i(TAG,"删除后数据库中Fruit为:" + fi );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。