在上篇文章中我们说了Room的搭建跟简单的增删改查,如果还有不明白的可以查看上篇文章
这篇文章主要是讲一下Room在实际项目中的应用,在项目中,我们对数据库不可能只是进行简单的增删改查,肯定还会用到根据字段查询,然后修改,或者删除某一字段之类的.
首先是Dao
@Dao
public interface UserDao {
//增
@Insert
void insert(User... users);
//删除某一项
@Delete
void delete(User... users);
//删全部
@Query("DELETE FROM user")
void deleteAll();
//改
@Update
void update(User... users);
//查全部
@Query("SELECT * FROM user")
List<User> getAllUsers();
//根据字段查询
@Query("SELECT * FROM User WHERE name= :name")
User getUserByName(String name);
}
这里的6种方法基本就是项目中会运用到的6种情况了,主要就是根据字段查询某一项的内容,没有这个别的基本都没用
接下来就是在Activity中开始使用了
上篇文章中讲了增删改查了,这里就挑一些没讲过的讲一下吧,改,根据某一字段查询那一项,删除那一项内容
首先理一下逻辑,改,还有删除一项内容,第一个要做的就是先找出那一项内容,就是根据用户提供的字段去查询那一项内容
//根据字段查询
private User queryByName(String name) {
final User user = UserDatabase
.getInstance(this)
.getUserDao()
.getUserByName(name);
return user;
}
这里也可以返回别的类型,比如List,但是要跟Dao里面返回的是一样的,
我们已经找到我们想找的那一项了,然后就是更改那一项的内容
//改 想要更改的内容 ,想要替换的内容
private void update(String name1,String name, int age) {
//先根据想更改的内容得到那一项的实体类,然后进行更改
User user = queryByName(name1);
user.setName(name);
user.setAge(age);
UserDatabase
.getInstance(this)
.getUserDao()
.update(user);
}
这里传入的参数是灵活的,可以只更改name,或者只更改age
接下来就是删除这一项内容
//删除某一项
private void del(String name) {
//先根据想更改的内容得到那一项的实体类,然后进行删除
User user = queryByName(name);
UserDatabase
.getInstance(this)
.getUserDao()
.delete(user);
}
到这里项目上的一些需要的操作都已经完成了,所有的操作都要现在Dao里面写出相应的方法,然后在activity中调用.
以上是本人对Room的一些浅见,如有不足之处,还望指出