GreenDao的基本使用以及遇到的坑
来源:互联网 发布:爱国为主题的电影知乎 编辑:程序博客网 时间:2024/06/07 02:01
GreenDao的基本使用以及遇到的坑
- 前言
相比较我上一篇博客Ormlite数据库来说,个人认为GreenDao的易用性强大得多。为什么?接着看。 - 配置
在相应的位置添加上以下下内容,相信大家都懂。
(1) apply plugin: 'org.greenrobot.greendao' dependencies { compile 'org.greenrobot:greendao:3.0.1' compile 'org.greenrobot:greendao-generator:3.0.0' } greendao { //和buildTypes同位置 schemaVersion 1 daoPackage 'com.xxx.model.greendao.gen' targetGenDir 'src/main/java' } (2) buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' } } allprojects { repositories { jcenter() } }
3.建包
在2中配置了com.xxx.model.greendao.gen,
在com.xxx.model.greendao下建包entity用于存放bean
- class上注释@Entity
- 表id上注释@Id
- 无需记入的数据上注释@Transient
- 然后就可以build-Make Project
@Entitypublic class ErrorInfo { private String ErrorInfoID; @Id private String AddTime; private String ErrorSource; private String ErrorDetalisInfo; @Transient public List<XX> xxList; }
4.系统生成
Make Project之后系统自动生成了DaoMaster,DaoSession,GreenDaoManager和对应的dao
5. 相关使用代码
DaoSession session = GreenDaoManager.getInstance().getSession(); addProjectDao = session.getS_AddProjectDao(); addProjects = addProjectDao.loadAll(); QueryBuilder<S_Personal> qb = session.getS_PersonalDao().queryBuilder(); List<S_Personal> list = qb .where(qb.and(S_PersonalDao.Properties.PersonName.eq(editTextuser.getText().toString()) ,S_PersonalDao.Properties.PersonPassword.eq(editTextpwd.getText().toString()))) .build().list(); List<S_LoginInfo> s_loginInfos = s_loginInfoDao.queryBuilder().where(S_LoginInfoDao.Properties.PersonID.eq(list.get(0).getPersonID())).build().list(); if (s_loginInfos.size() == 0) { final S_LoginInfo s_LoginInfo = new S_LoginInfo(); s_LoginInfo.setPersonID(list.get(0).getPersonID()); s_LoginInfo.setLoginTime(CurrentTimes.getCurrentTime()); s_LoginInfo.setWhether("未上传"); s_loginInfoDao.insertOrReplace(s_LoginInfo); } 开启事务 session.runInTx(new Runnable(){ S_SubwayLineDao dao = session.getS_SubwayLineDao(); List<S_SubwayLine> lineList = dao.queryBuilder().build().list(); for (S_SubwayLine s_subwayLine : lineList) { dao.deleteInTx(s_subwayLine); } session.clear(); for (SubwayLine subwayLine : list) { for (Interval interval : subwayLine.getIntervals()) { S_SubwayLine s_SubwayLine = new S_SubwayLine(); s_SubwayLine.setIntervalId(interval.getIntervalId()); s_SubwayLine.setName(subwayLine.getName()); s_SubwayLine .setIntervalName(interval.getIntervalName()); dao.insertOrReplaceInTx(s_SubwayLine); } } });
6.使用中出现的坑
1. 查询加遍历,出现第二条查询不到的问题,处理方法如下,循环中queryBuilder();
S_ProjectDao s_projectDao = session.getS_ProjectDao();
for(){
QueryBuilder queryBuilder = s_projectDao.queryBuilder();
}
2. 子线程中数据库开启事务,导致概率性不更新UI的问题。建议能不开启事务,就别开启,或者更新UI重新设计
3.
7.介绍就到这里了,相关代码有空上传。
0 0
- GreenDao的基本使用以及遇到的坑
- GreenDao 的基本使用
- greenDao的基本使用
- greenDao的基本使用
- GreenDao的基本使用
- greenDao的基本使用
- greenDao使用时遇到的坑
- 使用greenDAO遇到的问题
- 使用GreenDao遇到的问题
- 使用GreenDao遇到的问题
- GreenDAO的使用基本篇
- GreenDao的使用以及断点续传
- GreenDao 3.2.0 的基本使用
- GreenDao 3.2.0 的基本使用
- GreenDao 3.2.0 的基本使用
- GreenDao 3.2.0 的基本使用
- Android数据库之greendao的基本使用
- greenDao的基本使用及用法详解
- unity 时间戳
- Mysql 字符串 varchar 和 char 在存储上的区别
- 数据字典查询数据库中分区字段
- Android Multimedia实战(六)音频 MediaRecorder和AudioRecord录音与MediaPlayer和AudioTrack播放
- C语言:数组中相邻元素持续相加,求其最大值!
- GreenDao的基本使用以及遇到的坑
- centos6.4关闭防火墙步骤
- yii1.17 资料大全
- React Native 防重复提交实现方法
- AccessController.doPrivileged 小记
- source insight使用技巧
- CentOS 安装 GraphicsMagick
- React Native 项目结构、剖析index.ios.js文件
- java 利用Xstream注解生成和解析xml