GreenDao 使用知识小y

//关于 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) 

                    

               

     

你可能感兴趣的:(GreenDao 使用知识小y)