GreenDao3.0使用时的心得体会
来源:互联网 发布:h3c基于acl的端口镜像 编辑:程序博客网 时间:2024/05/21 20:29
安卓开发可以使用的ORM框架有很多,最近做的项目中,我就初次使用了Greendao这一款,怎么说,框架这东西都是封装后求方便的,所以大部分都是很好用的,这里我也不准备评价,大同小异嘛,我主要想说一下,自己在使用greendao时遇到的小问题和一些总结。
框架的搭建和使用配置相关的信息,大家可以去看看其他的资料,网上有很多。因为我也是第一次使用这个框架,最初也是在网上学习到了很多,现在也当是给自己做个总结。
注解
@Entity:实体类注解。在实体类前添加这个注解,编译项目,实体类会自动编译,生成get、set方法并且会在com.greendao.gen目录下生成三个文件,DaoMaster 、DaoSession、Dao类;如:
@Entitypublic class User { private int sex; private String name; @Generated(hash = 756500433) public User(int sex, String name) { this.sex = sex; this.name = name; } public int getSex() { return this.sex; } public void setSex(int sex) { this.sex = sex; } public String getName() { return this.name; } public void setName(String name) { this.name = name; }}
这样使用,如果配置正确,编译后数据库中就会有对应类名的表,并且实体类属性作为表字段属性。
@Id(autoincrement = true):这个是注解主键的,括号中的true表示自增,当然false就是不自增的了。
如:
@Id(autoincrement = true) private Long Id; private String termsn;
需要说明的是 主键必须是Long型的!
这两个注解基本就是必备的了,大部分情况下就已经够用了,很方便。
操作(增删改查)
这个基本是所有数据库的使用的基本了,greendao的增删改查也是封装后的方法,当然也是支持原生SQL语句的,有兴趣想深入了解学习的可以去找找相关的资料,我这里想说下自己使用其封装的操作的心得。(建议每个表中都设置主键,可以是已存在的属性,也可以增加一个自增长的Long型Id)
增
whiteListDao.insertOrReplaceInTx(whitelists);//顾名思义,存在则替换,否则插入,这是一个集增加与修改于一体的方法,并且支持集合插入,需要注意的是必须存在主键whiteListDao.insertInTx(whitelists);//有序插入,支持集合transactionDao.insert(transaction);//直接插入,不需要主键也行
删
transactionDao.delete(transaction);transactionDao.deleteByKey(transaction);//根据主键删除transactionDao.deleteAll();//删除表中所有数据改
主要使用的就是Update,如
transactionDao.update(transaction);查
最复杂,也最多样的就是这里了,查询操作,我个人认为是最具有灵魂的,性能、安全、效率、简洁等等都能从中体现。
我在使用greendao时,主要使用的是它的where查询,
//查询某一天数目为5的那批进货数据:Query<T> nQuery = transactionDao.queryBuilder() .where(TraDao.Properties.Date.eq(date))//查询某一日期 .where(TraDao.Properties.Num.eq(5)) .build(); if (nQuery != null && nQuery.list() != null && nQuery.list().size() > 0) { List<T> transactions = nQuery.list(); }where查询可以连查,如上,在使用where后可再接查询,理论上无限制,也可使用组合嵌套查询,这里引用下官方文档的例子:
//查询条件表达为:名是Joe AND(生日的年份大于1970 OR(生日的年是1970 AND 生日的月等于或大于10))QueryBuilder qb = userDao.queryBuilder();qb.where(Properties.FirstName.eq("Joe"),qb.or(Properties.YearOfBirth.gt(1970),qb.and(Properties.YearOfBirth.eq(1970), Properties.MonthOfBirth.ge(10))));List youngJoes = qb.list();值得注意的是,eq后面的参数可以是字符串、整型,但是gt(大于)、ge(大于等于)还有lt、le(小于等于)后面只有整型时才起作用,不清楚原因,
实测是这样,也可能是我有什么地方不对。
另外,loadByRowId(int i);//通过行号查询某一行数据(行号从1开始)
loadAll();//查询所有数据
当然,在查询结果后面也可以进行排序相关处理,如:
List<T> transactions = nQuery.where(TraDao.Properties.Date.eq(sdate)).orderDesc(TransactionEcardDao.Properties.Time).list();//查询某一日期数据并根据时间递减排
总结
使用ORM框架可以帮助我们更快速的进行开发工作,使用时也很简单、方便,在进行一些简单的数据库操作时,其对外封装的操作方法也更容易让我们调用,
效率、性能优化都得到提高,但是在处理一些较复杂的查询操作时,显然只靠封装的方法是远远不够的,或者说使用起来会比较累赘,但是这个时候又不能临时
改框架,那么方法就一个,自定义查询语句,也就是我们上面提到的,支持原生SQL语句查询,这时考验的就是各位的能力了,这里我不多说了,不敢班门弄斧。
好了,第一次使用greendao,然后对自己用到的知识做了下总结,认识可能不全面也不到位,有什么问题望各位指点,谢谢各位。
- GreenDao3.0使用时的心得体会
- GreenDao3.0的使用
- GreenDao3.0的使用
- greenDao3.0 的基本使用
- GreenDao3.0 的基本使用
- 关于GreenDao3.0的使用
- GreenDao3.0框架使用时IDE的配置问题
- Android ORM框架 GreenDao3.0的使用
- 关于greenDao3.0的使用心得
- (一)GreenDao3.0的简单使用
- Android Greendao3.0框架的使用
- Android ORM框架 GreenDao3.0的使用
- greenDao3的基本使用
- greenDAO3.2的使用
- GreenDao3.2的使用
- greenDAO3.2的使用
- GreenDao3的初步使用
- GreenDao3的基本使用
- 线程的通讯(wait和notify)
- easyUI的dialog的href引入jsp页面报错404
- Spark Streaming 中使用 zookeeper 保存 offset 并重用 Java版
- 木棒问题
- UE4_动画系统
- GreenDao3.0使用时的心得体会
- Mybatis报错:Invalid bound statement (not found)
- 【微信小程序】自定义模态对话框实例
- zookeeper集群搭建
- Fluent在服务器上的并行
- zoj 3688 The Review Plan II
- 数据结构——堆
- Android:WebView的代码详解=
- mysql(七)存储过程