最近项目要用数据库去做数据存储,看到过后台写的sql语句,几十行,甚至更多,瞬间蒙逼,搞吧
但是但是但是,翻了翻网站,看到greendao这个数据库框架是不需要写sql语句的,狂喜,果断选择这个.
进入正题,开搞,先扒一下官网吧,先看一下介绍,性能这一块是跟OrmLite及ActiveAndroid做了对比,很直观的可以看到性能碾压
还有就是所担心的库文件的大小,这直接影响到我们apk的大小,接着往下看
greenDAO’s core library is less than 100k in size, so adding greenDAO does not hurt your APK size.
核心库只有100K,所以库的大小完全就不用担心了,基本对于几十兆的apk来说,就是九牛一毛
greenDAO will generate Java data objects (entities) and DAO objects. The DAO objects are tailored to the entities allowing the best possible mapping.
看到这里,就比较明朗了,实体映射DAO对象,也就是我们的bean对象映射数据库的表,典型的model first模式的ORM框架
官网连接 http://greenrobot.org/greendao/features/
下面就开始说一下遇到的问题,具体的怎么去集成配置,就不赘述了,一搜一大堆
遇到的第一个问题就是这个
android.database.sqlite.SQLiteConstraintException: column NAME is not unique (code 19),看下我们写的代码,name唯一
问题的原因就是name重复了,既然我们字段设置了unique或者primary key 肯定是不希望数据重复,如果插入的数据重复了怎么办?替换掉旧数据? 看一下api 自动判断数据是否一致,数据一致则替换,不一致就插入,问题解决
有一个问题要说的,就是模糊查询like这个api,给的参数是需要传String类型的,模糊查询的特征就是%,但是模糊查询的%拼接并没有给封到like里面,所以要自己手动去前后拼上去