数据库框架 GreenDao

https://www.jianshu.com/p/853401a7d02b

坑:

1、主键要使用Long类型,不要使用long类型,因为long一定不是null,而Long可以是null;

如果使用long,那么实体类构造时,主键会自动是0,而不是null,这时插入会因为主键不唯一报错;

如果使用Long,这时主键是null,而且表的主键是自增的,所以不会报错;

2、QueryBuilder的使用

    //插入新的Message
    public void InsertMessage(MessageBean messageBean){
        QueryBuilder queryBuilder = mDaoSession.getMessageBeanDao().queryBuilder();
        //先删除原来的数据
        List<MessageBean> messageBeanList = queryBuilder.where(MessageBeanDao.Properties.User_id.eq(messageBean.getUser_id()),MessageBeanDao.Properties.Orther_user_id.eq(messageBean.getOrther_user_id())).list();
        for(MessageBean temp_message:messageBeanList){
            mDaoSession.getMessageBeanDao().deleteByKey(temp_message.getId());
        }
        //插入新数据
        mDaoSession.getMessageBeanDao().insert(messageBean);
    }

 

    //查询Message序列
    public List<MessageBean> GetMessage(long message_id){  //根据message_id取出最新的20条数据
        QueryBuilder queryBuilder = mDaoSession.getMessageBeanDao().queryBuilder();
        List<MessageBean> messageBeanList = new ArrayList<>();
        if(message_id < 0){  //直接取当前最新的20条数据
            messageBeanList = queryBuilder.orderDesc(MessageBeanDao.Properties.Id).limit(20).list();
        }
        else{
            messageBeanList = queryBuilder.where(MessageBeanDao.Properties.Id.lt(message_id)).orderDesc(MessageBeanDao.Properties.Id).limit(20).list();
        }
        return messageBeanList;
    }

 

posted on 2019-06-24 11:17  赵子隆  阅读(132)  评论(0编辑  收藏  举报

导航