GreenDao使用注意事项

使用详解

https://blog.csdn.net/qq_35956194/article/details/79167897

使用注解

@unique 唯一约束(这个会默认创建索引)
@NameInDb:有的时候数据库中的字段跟你的对象字段不匹配的时候,可以使用此注解。

DaoMaster:用于创建数据库以及获取DaoSession
DaoSession:用于获取各个表对应的Dao类,可以缓存数据.

这个没有具体用过
DatabaseManager.getInstance().getSession().clear();//清楚 session 的所有缓存
DatabaseManager.getInstance().getSession().getStudentDao().deleteAll(); // 清除 StudentDao的缓存

各个表对应的Dao:提供了对表进行增删改查的方法,以及表的各个字段,表名等属性.

升级

任何修改都应该对数据库升级.
数据库升级: build.gradle中数据库版本增高.
如果不操作,数据库之前保存的数据都会消失.默认是删除所有表,再创建所有表,清除所有数据.
如果用三方,需要在MySQLiteOpenHelper中指定dao的class.

插入数据

insert: 如果主键已存在,再插入主键一致的数据时,会崩溃.
insertOrReplace: 如果主键已存在,再插入主键一致的数据时,会更新数据.

删除

delete 也是基于deleteByKey,只不过是先找到key,然后在调用deleteByKey

@Id(autoincrement = true)

设置主键为自动增长.如果之前表中最后一条数据主键为10,主键列表为1,2,3,4,5,6,7,8,9,10,将这条数据删除之后,再新增一条数据,那么新增的数据的id是11,而不是10.那么数据id是1,2,3,4,5,6,7,8,9,11,缺少10.,也就是说主键会一直比增长,不管你曾经是否删除过.
如果不添加(autoincrement = true),那么索引一直是连续的,即使中途删除过元素.

每一个实体bean都应该有一个主键

如果没有设置主键,那么实体bean不能更新,更新时会提示

does not have a single-column primary key

1,如果表单有唯一id,那么这个id可以设置成主键.
2,如果这个表单没有id,那么需要我们添加一个id,@Id,如果需要自增,可以添加(autoincrement = true),同时id应该使用Long,大写的L.那么在创建bean对象的时候,主键应该设置null,设置成null才能自动增长,如果设置成一个固定的值,那么这个id只能是那个固定的值.

查询

得到所有数据

loadAll()

unique()返回唯一一条数据
unique()方法可以用来返回唯一一条数据, 如果只存在一条,那么正常返回,如果存在多条,会崩溃.
1,如果某个字段添加注释@id,或者@unique,表示它是唯一的,因此在查询的时候可以利用unique()方法来获取这唯一一行的数据.
2,如果字段不是唯一的,但是采用了unique方法来获取,如果查询到的列表中有两条数据,那么会崩溃.并提示Expected unique result, but count was 2.

与条件查询

 List<Student> jin3 = studentDao.queryBuilder().where(StudentDao.Properties.Age.eq("1"), StudentDao.Properties.Name.eq("jin1")).list();

或条件查询

 List<Student> jin3 = studentDao.queryBuilder().whereOr(StudentDao.Properties.Age.eq("1"), StudentDao.Properties.Name.eq("jin3")).list();

复杂查询,与条件与或条件同时存在
或和与需要用()分隔开来

 List<Student> students = studentDao.queryRawCreate(" where (  id = ? and name = ?  ) or ( id = ?  )", "0", "jin0", "1").list();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值