//关于 group by 的实现
//--------------------
XXXDao.queryBuilder().where(new WhereCondition.StringCondition(Properties.Contact_number.eq(phonenumber) + "GROUP BY group_name")).orderDesc(Properties.Date_time).build().list();
在GreenDao的使用过程中,查询了好多的资料,基本是都是把网站上的东西给翻译,再加一点点的说明,可是真正操作时,你会发现有很多的疑问,
以下就是记录我在使用过程中遇到的问题,及解决的方法,可能对,可能不对,可能不妥当,欢迎大家提出宝贵意见!
1.关于 entity 中的 @Id 字段
大部分就是这样说的: @Id 对应数据表中的 Id 字段,是一条数据的唯一标识。
再多一点的话,会告诉你加一个 @Id(autoincrement = true)
就是可以设置为自增,或手动增加!
----------------------------------------------------
我的疑问: 如果想获取 新Insert 数据的Id 怎么办??(老鸟会说: 你没有细看源码,或是说明书!是的,不过我真的是个新手,只是记录一下)
如果设置为自增: 那是不是 插入 后还要 再查询一下,获取Id,
如果手动设置ID: 那是不是在插入前,还是需要查询一下数据库!
也就是说不管怎么样就需要额外查询一下数据库!
这不是我们想要的!
答案很简单: 就是 Insert 本身就返回一个该插入数据的ID
Long newID = myDataDao.insert(myObj); // newID,就是插入该条数据的Id.
事实上:在我们实际应用过程中,有时,希望自己手动给定ID, 比如:
同步服务器的数据到本地手机SQLITE那就需要就原来的ID(当然,另一个方案 也可以设置另外一个 冗余 字段ID),
其实,也很简单,只要测试一下就知道了:
直接插入数据,包括Id字段(需要有相应的 Construtor),当然,字段是不能与原来的重复!
我的办法: 把原来的数据全删除,然后再插入,这样就可以保持原来的ID不变.
缺点: 需要删除原来的数据,再插入,如果数据量很大的话,这样做是不合理的(因为我的数据量不是很大万条以内)
优点: 就是保持原来的ID
(当然,另一个方案 也可以设置另外一个 冗余 字段ID)