greenDao 3.0基本使用
来源:互联网 发布:淘宝直播比较红的主播 编辑:程序博客网 时间:2024/04/18 22:16
一、greenDao概念
greenDao是一种实现ORM( Object Relation Mapping 即 对象关系映射)多的技术。greenDao支持android原生的数据库SQLite,且代码库仅仅100k大小。greenDao 会根据modle类自动生成实体类(entities)和Dao对象,并且Dao对象是根据entities类量身定做的并且一 一对应。
二、集成greenDao
AndroidStudio集成greenDao,在gradle中做如下配置:
引入依赖库:
dependencies { compile 'org.greenrobot:greendao:3.0.1' compile 'org.greenrobot:greendao-generator:3.0.0'}
配置引入greenDao插件:
buildscript { repositories { mavenCentral() } dependencies { classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' }}
greenDao数据库的配置:
android { ...... greendao{ schemaVersion 1 targetGenDir 'src/main/java' daoPackage 'com.example.xiangyong.greendaodemo.greendao.gen' } ...... }schemaVersion:数据库schema版本,也可以理解为数据库版本号,如果数据库需要迁移更新修改这个版本号即可,如增加、删除、修改字段等。targetGenDir :设置自动生成的DaoMaster 、DaoSession、Dao目录。daoPackage:设置自动生成的DaoMaster 、DaoSession、Dao的包名。
至此greenDao已经集成到AndroidStudio中了。接下来就是写实体类,
通过注释来定义表单与实体,例:
@Entitypublic class Patient { @Id(autoincrement = true) private Long id; @NotNull private String patientName; @Transient private String patientPid; ......}@Entity:用于标记该实体类,只有使用 @Entity 注释的Bean类才能被dao类操作,目的就是告诉greenDao该类需要持久化。@Id:@Id一般会选择long/Long属性作为Entity ID(即数据库中的主键)autoincrement=true表示主键会自增如果false就会使用旧值。@NotNull:确保属性值不会为null值。@Transient:使用该注释的属性不会被存入数据库中。
接下来让我们点击AndroidStudio中Build菜单栏中的Make Project(或者直接sync),make完成之后会发现我们的greenDao以为我们生成了如下的类:
DaoMaster、DaoSession和我们自己的Dao。
DaoMaster:是GreenDao的入口也是greenDao顶级对象,对于一个指定的表单持有数据库对象(SQLite数据库)并且能够管理DAO类- 能够创建表和删除表;其内部类OpenHelper 与DevOpenHelper是创建SQlite数据库的SQLiteOpenHelper的具体实现。DaoSession:对于一个指定的表单可以管理所有的Dao 对象,也能够对实体类执行 insert ,load,update,refresh.delete操作。
三、greenDao操作增删改查
初始化:
//初始化代码只需执行一次,故可放在application里面DaoMaster.DevOpenHelper openHelper =new DaoMaster.DevOpenHelper(MainActivity.this,"patient.db",null);DaoMaster daoMaster = new DaoMaster(openHelper.getWritableDb()); DaoSession daoSession = daoMaster.newSession();//下面这个获取具体的dao的代码在需要用到的地方调用即可PatientDao patientDao = daoSession.getPatientDao();注:
增:
Patient patient = new Patient(null,"张三");patientDao.insert(patient);
删:删除数据跟修改数据一样,需要先查出来
List<Patient> list = patientDao.queryBuilder().where(PatientDao.Properties.PatientName.eq("张三")).build().list();for (Patient patient: list ) { userDao.delete(user); }如果想删除所有数据:userDao.deleteAll();
改:
Patient Patient = patientDao.queryBuilder().where(PatientDao.Properties.PatientName.eq("张三")).build().unique(); patient.setPatientName("王五");
查:
//只查询一条数据Patient Patient = patientDao.queryBuilder().where(PatientDao.Properties.PatientName.eq("张三")).build().unique();//查询多条List<Patient> list = patientDao.queryBuilder().where(PatientDao.Properties.PatientName.eq("张三")).build().list();
greenDao的增删改查还支持sql语句如:
String sql ="insert into patient values (null,'111')";GreenDaoManager.getInstance().getSession().getDatabase().execSQL(sql);
阅读全文
0 0
- GreenDAO 3.0 基本使用
- greenDao 3.0基本使用
- GreenDao 的基本使用
- GreenDao 基本使用
- greenDao--3.2基本使用
- GreenDao-基本使用
- greenDao的基本使用
- greenDAO基本使用详解
- GreenDao基本使用
- Android GreenDao基本使用
- Android GreenDao基本使用
- GreenDao基本使用_
- greenDao的基本使用
- GreenDao的基本使用
- greenDao的基本使用
- GreenDAO的使用基本篇
- 安卓 GreenDao 基本使用
- greenDao Orm 基本使用<一>
- angular中的ng-container标签
- Codeforces 544C Writing Code【二维完全背包】
- SharedPreferences用法
- java的语言基础二
- iOS 解决NSlog打印输出的的文字都是UTF-8格式
- greenDao 3.0基本使用
- 高效使用 Google
- CentOS 7.2.1511软件包下载
- 判断是否第一次进入app
- 各主流浏览器和服务器URL传参(GET方式)的最大处理能力说明
- Windows下安装Tensorflow
- 关于knockout.js的observable动态加载问题
- Java环境变量解析
- selenium3.4 发邮件时,随机选择邮箱中收件人