GreenDAO框架(二)基本使用篇

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

  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查询操作的更多说明,请参考 官方文档
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨景文Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值