Android Jetpack组件-Room Query注解使用

1,042 阅读2分钟

这是我参与 8 月更文挑战的第 13 天,活动详情查看: 8月更文挑战

背景

在项目中不可避免的使用数据库, 而三方框架又是五花八门, 在这中我就选择了google Jetpack组件中的Room
上篇文章 简单介绍了一下Room 增删改注解的使用, 这篇就简单Query注解基本使用

查询简单使用

通过@Query注解指定方法为执行指定的sql语句,可以通过@Query注解进行删除/更新/查找操作,示例如下:

@Query("SELECT * FROM Your TableName")
List<TestEntity> getData();

在Dao的实现类中调用对应的方法

public List<Object>  getData() {
    return mDatabase.testDao().getData();
}

带参数查询

在实际情况中, 大多情况都需要根据一个或多个参数进行查找, 那么在sql语句中添加参数就成了一个需求,示例如下:

@Query("SELECT * FROM Test  WHERE account =:account ")
List<Object> getData(String account);

在Dao的实现类中调用对应的方法

public List<Object>  getData(String account) {
    return mDatabase.testDao().getData(account);
}

删除数据

在实现开发中通过@Delete注解可能不能满足需求, 可以通过执行sql语句来完成删除

@Query("DELETE FROM Test  WHERE account =:account ")
void deleteData(String account);

更新数据

在实现开发中通过@Update注解可能不能满足需求, 可以通过执行sql语句来完成删除

@Query("UPDATE Test SET account = :account WHERE account = :oldaccount")
void deleteData(String account,String oldaccount);

常用sql语句

SELECT * FROM 表名 查找并返回指定表中的所有数据
SELECT * FROM 表名 WHERE account =:account 查找表中account字段符合指定参数的所有数据
SELECT 字段名 FROM 表名 查找并返回指定表中的所有数据的指定字段,多个字段通过,隔开
DELETE FROM 表名 WHERE 字段名 =值 根据指定字段的值删除表中数据
UPDATE 表名称 SET 列名称1 = 新值 WHERE 列名称2 = 某值 当列表名2等于谋值时,更新表中列名1数据