greendao连接mysql_GreenDao深入

大家好,在上一篇文章中,我主要介绍了GreenDao3.0的最基本的用法,当然也是最常用的用法,如果你的项目里没有特别复杂的多表关联需求的话,我相信那篇文章的知识点已经足够使用了。但是,如果你是一个求知欲特别强的人或者手上有要在本地创建复杂的数据库需求的话,我相信认真读完本篇文章,你一定会有所收获。

好了废话不多说,今天我们来学习下GreenDao的高级用法有哪些吧!阅读本篇文章前你需要对GreenDao有一定的了解,如果你对GreenDao了解还不够的话,建议先去阅读史上最高效的ORM方案——GreenDao3.0详解

目录

session 缓存

多表关联

多表查询

自定义参数类型

与数据库操作相关的AS插件

session 缓存

如果你有多个相同的查询语句去执行,猜猜看返回给你的对象是一个还是多个?比如说像下面这样

QueryBuilder projectQueryBuilder = projectDao

.queryBuilder()

.where(ProjectDao.Properties.UserName.eq("123456"));

Query query = projectQueryBuilder.build();

Project project1=query.unique();

QueryBuilder projectQueryBuilder1 = projectDao

.queryBuilder()

.where(ProjectDao.Properties.UserName.eq("123456"));

Query query2 = projectQueryBuilder1.build();

Project project2=query.unique();

答案是project1==project2而且project2查询出来的速度要比project1查询出来的速度快很多倍;

这是因为在同一个session中如果一个entities已经被session记录那么下一次再次操作该实体时,greenDao会先从内存中查找,如果内存中没有再去数据库中查找。这样一方面就极大的提高greenDao的查询效率,另一方面也是需要特别注意的是当entities更新过 greenDao仍然会从内存中取出旧值,所以如果entities更新过,需要去调用daoseesion.clear()方法清除缓存后才能查到最新值,否则查询到的将还是保存在内存中的值。

下面介绍下清除缓存有两种方法

清除所所有的缓存

daoSession.clear();

清除指定Dao类的缓存

projectDao = daoSession.getNoteDao();

projectDao.detachAll();

多表关联

1. 1:1关联

当我们在使用sqlite数据库来实现表的1:1关联时,通常我们会在主表中定义一个外键去关联副表,当要查询对应的数据时,首先我们要知道查询数据的外键,然后需要用外键去副表中查询所需要的数据。比如下面这样

public class Customer {

private Long id;

}

public class Order {

private Long id;

private Date date;

private long customerId;

}

Customer表通过id与Order表关联,查询Order的Custom

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值