请选择 进入手机版 | 继续访问电脑版
JAVEN

GreenDao框架使用(二)基本使用篇

所在版块: 课堂笔记 2016-05-04 11:39   [复制链接] 查看: 2142|回复: 4
本帖最后由 yangjw 于 2016-5-4 17:07 编辑

  • 前言
上一篇介绍了GreenDao框架的基本配置,本篇将介绍GreenDao的基本使用(本篇文章是接上一篇而写,本篇使用的代码建立在上一篇的基础之上),包括增删查改操作,以及一些注意事项。上篇文章我们提到配置完成GreenDao之后,在Android项目中使用流程是:
1、通过DB对象创建DaoMaster
2、通过DaoMaster创建DaoSession
3、通过DaoSession获取CustomerDao
4、通过CustomerDao完成对数据库表的操作,从而获得相应的Customer对象。
基本流程图如下:
Core-Classes-150.png
  • 初始化

  1. <div>//创建一个开发环境的Helper类,如果是正式环境调用DaoMaster.OpenHelper
  2.         DaoMaster.DevOpenHelper mHelper = new DaoMaster.DevOpenHelper(this,"androidxx",null);
  3.         //通过Handler类获得数据库对象
  4.         SQLiteDatabase readableDatabase = mHelper.getReadableDatabase();
  5.         //通过db对象创建DaoMaster对象
  6.         DaoMaster daoMaster = new DaoMaster(readableDatabase);
  7.         //通过DaoMaster获取DaoSession
  8.         daoSession = daoMaster.newSession();</div><div>//获得CustomerDao对象
  9.                 CustomerDao customerDao = daoSession.getCustomerDao();</div>
复制代码
以上代码最终获得DaoSession对象,然后接下来就可以通过DaoSession获得自定义的DAO文件,比如CustomerDao。

  • 增加


  1.                 //创建一个实体Java bean对象Customer
  2.                 Customer customer = new Customer();
  3.                 //设置Customer对象的属性,此处并没有设置id的值,因为ID是自增长的
  4.                 customer.setCustomerAge(21);
  5.                 customer.setCustomerName("andoridxx");
  6.                 customer.setCustomerPassword("123456");
  7.                 customer.setCustomerPhone("18900000000");
  8.                 //将Customer对象插入数据库,返回的是新增数据的ID
  9.                 long customerId = customerDao.insert(customer);
复制代码
以上代码中insert方法返回的id值大于0表示新增成功。其中Customer对象中的id我们在自动生成的时候已经设置为主键自增长,所以此处不用认为的配置id的值。

  • 删除

1、删除指定Id的数据
  1. //删除指定Id的数据
  2.                 customerDao.deleteByKey(1L);
复制代码
2、删除指定Java对象的数据
  1. //删除指定的Customer对象,一般是在查询结果的基础上进行删除,可以采用直接删除一个查询出的对象
  2.                 customerDao.delete(customer);
复制代码
3、删除所有数据
  1. //删除所有
  2.                 customerDao.deleteAll();
复制代码

  • 查询

1、查询指定Id的一条数据
  1. Customer customer1 = customerDao.loadByRowId(2);
复制代码
2、查询所有
  1. List<Customer> customerList = customerDao.loadAll();
复制代码
3、原生SQL条件查询
  1. List<Customer> customers = customerDao.queryRaw("where _id=? and customer_age > ?", "1","20");
复制代码
以上代码中queryRaw方法中的参数一表示查询的条件语句,参数二是不定长的参数,其中“1”对应的是参数一中的第一个“?”,“20”对应的是参数一中的第2个“?”。
4、无SQL的条件查询语句
对于一些不熟悉SQL语言的人来说,无SQL的查询方式可以说是很简便和容易理解。
  1. //通过customerDao创建一个Query Builder对象
  2.                 QueryBuilder<Customer> customerQueryBuilder = customerDao.queryBuilder();
  3.                 //添加where条件查询
  4.                 customerQueryBuilder.where(CustomerDao.Properties.Id.eq(1));
  5.                 //添加and条件语句
  6.                 customerQueryBuilder.and(CustomerDao.Properties.CustomerAge.gt(20), CustomerDao.Properties.CustomerPhone.isNotNull());
  7.                 //建造一个Query对象
  8.                 Query<Customer> query = customerQueryBuilder.build();
  9.                 //通过query对象获取结果集
  10.                 List<Customer> customers = query.list();
复制代码

  • 修改

在实际开发中,修改一般是在查询的基础上进行的,比如修改订单信息,你需要先把订单信息查询出来。
1、修改单行数据
  1. Customer customer2 = new Customer();//此处customer对象原则上应该是查询出来的对象,此处为了容易理解,直接创建了。
  2. customer2.setId(1L); //此处设置的Id必须是数据库存在的Id
  3.                 customer2.setCustomerAge(21);
  4.                 customer2.setCustomerName("张三")
  5. customer2.setCustomerPassword("789012")
  6. customer2.setCustomerPhone("18922221111");
  7.                 customerDao.update(customer2);//更新
复制代码
2、加入事务(Treanaction)控制的修改单个数据
  1. customerDao.updateInTx();
复制代码
3、加入事务(Treanaction)控制的批量修改数据
  1. customerDao.updateInTx(Iterable<T> entities)
复制代码

  • 其他

关于GreenDao的增删查改的基本使用就是如上所述。当然,GreenDao不止这些功能,比如GreenDaode查询操作,支持Lazy加载,即懒加载方式----就是使用的时候才去加载,没有使用到的时候,不进行预加载。懒加载方法有listLazy()listLazyUncached()。
关于GreenDao查询操作的更多说明,请参考官方文档

下一篇将介绍GreenDao的多表联合查询【GreenDao框架关联关系介绍】。

回复

使用道具 举报

smlqf7

该用户从未签到

发表于 2018-8-11 08:42:10 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我的博客

QQ|Archiver|手机版|小黑屋|课堂笔记  

GMT+8, 2018-12-12 11:52 , Processed in 0.092922 second(s), 33 queries .

快速回复 返回列表