zoukankan      html  css  js  c++  java
  • 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) 

                        

                   

         

  • 相关阅读:
    33 函数参数的传递方式
    33 函数递归调用
    32 头文件
    31 函数
    30 枚举
    centos6.5升级默认的Mysql到5.5方法
    Centos6.5命令行快捷键
    redhat 安装lamp
    CentOS6.5中的vsftpd安装配置
    添加一个用户并且让用户获得root权限
  • 原文地址:https://www.cnblogs.com/ssqhan/p/8328746.html
Copyright © 2011-2022 走看看