上一篇介绍了
GreenDao框架的基本配置
,本篇将介绍GreenDao的基本使用(本篇文章是接上一篇而写,本篇使用的代码建立在上一篇的基础之上),包括增删查改操作,以及一些注意事项。上篇文章我们提到配置完成GreenDao之后,在Android项目中使用流程是:
1、通过DB对象创建DaoMaster
2、通过DaoMaster创建DaoSession
3、通过DaoSession获取CustomerDao
4、通过CustomerDao完成对数据库表的操作,从而获得相应的Customer对象。
基本流程图如下:
- <div>//创建一个开发环境的Helper类,如果是正式环境调用DaoMaster.OpenHelper
- DaoMaster.DevOpenHelper mHelper = new DaoMaster.DevOpenHelper(this,"androidxx",null);
- //通过Handler类获得数据库对象
- SQLiteDatabase readableDatabase = mHelper.getReadableDatabase();
- //通过db对象创建DaoMaster对象
- DaoMaster daoMaster = new DaoMaster(readableDatabase);
- //通过DaoMaster获取DaoSession
- daoSession = daoMaster.newSession();</div><div>//获得CustomerDao对象
- CustomerDao customerDao = daoSession.getCustomerDao();</div>
复制代码
以上代码最终获得DaoSession对象,然后接下来就可以通过DaoSession获得自定义的DAO文件,比如CustomerDao。
-
- //创建一个实体Java bean对象Customer
- Customer customer = new Customer();
- //设置Customer对象的属性,此处并没有设置id的值,因为ID是自增长的
- customer.setCustomerAge(21);
- customer.setCustomerName("andoridxx");
- customer.setCustomerPassword("123456");
- customer.setCustomerPhone("18900000000");
- //将Customer对象插入数据库,返回的是新增数据的ID
- long customerId = customerDao.insert(customer);
复制代码
以上代码中insert方法返回的id值大于0表示新增成功。其中Customer对象中的id我们在自动生成的时候已经设置为主键自增长,所以此处不用认为的配置id的值。
1、删除指定Id的数据
- //删除指定Id的数据
- customerDao.deleteByKey(1L);
复制代码
2、删除指定Java对象的数据
- //删除指定的Customer对象,一般是在查询结果的基础上进行删除,可以采用直接删除一个查询出的对象
- customerDao.delete(customer);
复制代码
3、删除所有数据
- //删除所有
- customerDao.deleteAll();
复制代码
1、查询指定Id的一条数据
- Customer customer1 = customerDao.loadByRowId(2);
复制代码
2、查询所有
- List<Customer> customerList = customerDao.loadAll();
复制代码
3、原生SQL条件查询
- List<Customer> customers = customerDao.queryRaw("where _id=? and customer_age > ?", "1","20");
复制代码
以上代码中queryRaw方法中的参数一表示查询的条件语句,参数二是不定长的参数,其中“1”对应的是参数一中的第一个“?”,“20”对应的是参数一中的第2个“?”。
4、无SQL的条件查询语句
对于一些不熟悉SQL语言的人来说,无SQL的查询方式可以说是很简便和容易理解。
- //通过customerDao创建一个Query Builder对象
- QueryBuilder<Customer> customerQueryBuilder = customerDao.queryBuilder();
- //添加where条件查询
- customerQueryBuilder.where(CustomerDao.Properties.Id.eq(1));
- //添加and条件语句
- customerQueryBuilder.and(CustomerDao.Properties.CustomerAge.gt(20), CustomerDao.Properties.CustomerPhone.isNotNull());
- //建造一个Query对象
- Query<Customer> query = customerQueryBuilder.build();
- //通过query对象获取结果集
- List<Customer> customers = query.list();
复制代码
在实际开发中,修改一般是在查询的基础上进行的,比如修改订单信息,你需要先把订单信息查询出来。
1、修改单行数据
- Customer customer2 = new Customer();//此处customer对象原则上应该是查询出来的对象,此处为了容易理解,直接创建了。
- customer2.setId(1L); //此处设置的Id必须是数据库存在的Id
- customer2.setCustomerAge(21);
- customer2.setCustomerName("张三")
- customer2.setCustomerPassword("789012")
- customer2.setCustomerPhone("18922221111");
- customerDao.update(customer2);//更新
复制代码
2、加入事务(Treanaction)控制的修改单个数据
- customerDao.updateInTx();
复制代码
3、加入事务(Treanaction)控制的批量修改数据
- customerDao.updateInTx(Iterable<T> entities)
复制代码
关于GreenDao的增删查改的基本使用就是如上所述。当然,GreenDao不止这些功能,比如GreenDaode查询操作,支持Lazy加载,即懒加载方式----就是使用的时候才去加载,没有使用到的时候,不进行预加载。懒加载方法有
listLazy()和
listLazyUncached()。
关于GreenDao查询操作的更多说明,请参考
官方文档。