GreenDao配置
在工程 build.gradle文件中添加如下代码
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
......
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
在app(模块)目录下的build.gradle中添加
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'
...
android {
...
...
//初始化greendao基本信息
greendao {//android下
schemaVersion 1
daoPackage 'com.wqx.greendao'//1
targetGenDir 'src/main/java'
//schemaVersion: 数据库schema版本,// 也可以理解为数据库版本号
// daoPackage:设置DaoMaster、DaoSession、Dao包名
// targetGenDir:设置DaoMaster、DaoSession、Dao目录
// targetGenDirTest:设置生成单元测试目录//generateTests:设置自动生成单元测试用例
//blog.csdn.net/xuwb123xuwb/article/details/73509107?utm_source=copy
}
}
dependencies {
compile 'org.greenrobot:greendao:3.2.2'
}
//网上关于greendao的配置写法不太一样,小编是这样写的,没有问题。可根据自己情况适当调整
@Id(autoincrement = true)
private Long id;
主键自增类型必须是Long(注意是大写的L),而不是小写的long类型,不然不会自增。
Long型id,如果传入null,则GreenDao会默认设置自增长的值。
如果是long greendao会自动生成 默认不为空的字段
如果是 Long 如果不设置 不为空的 属性,是可以为空的
https://blog.csdn.net/a_sid/article/details/72781693
https://blog.csdn.net/anyanyan07/article/details/73410053?locationNum=9&fps=1
@Entity 表示这个实体类一会会在数据库中生成对应的表,
@Id 表示该字段是id,注意该字段的数据类型为包装类型Long
@Property 则表示该属性将作为表的一个字段,其中nameInDb看名字就知道这个属性在数据库中对应的数据名称。
@Transient 该注解表示这个属性将不会作为数据表中的一个字段。
@NotNull 表示该字段不可以为空
@Unique 表示该字段唯一。小伙伴们有兴趣可以自行研究。
作者:当幸福来敲门58
链接:https://www.jianshu.com/p/ec37ea99ef69
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
初始化GreenDao
一般建议在Application中初始化数据库
https://www.cnblogs.com/tonycheng93/p/6295724.html
private void
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "dbname.db");
Database db = helper.getWritableDb();
DaoSession daoSession = new DaoMaster(db).newSession();
ProductDao dao = daoSession.getProductDao();
https://blog.csdn.net/w2_2015/article/details/74959103?utm_source=copy
https://www.cnblogs.com/tonycheng93/p/6295724.html
https://blog.csdn.net/baidu_31093133/article/details/51675472
https://blog.csdn.net/w2_2015/article/details/74959103
https://blog.csdn.net/duoluo9/article/details/54584580
https://blog.csdn.net/bskfnvjtlyzmv867/article/details/71250101
https://www.jianshu.com/p/6b11b534e307
https://blog.csdn.net/huangxiaoguo1/article/details/78234097 greendao加密解密
GreenDao联合主键
问题描述: 在定义一张表的时候,需要使用两个字段的属性作为一个唯一的主键,此时原来定义的 @Id()属性就不起作用了
解决方法:
在定义表名的时候 添加indexes 属性 约束
@Entity(nameInDb = "db", indexes = {
@Index(value = "属性名 DESC, 属性名 DESC", unique = true)
})
https://blog.csdn.net/qq_31017737/article/details/81738999
https://blog.csdn.net/huangxiaoguo1/article/details/54574713 升级问题
https://blog.csdn.net/xuwb123xuwb/article/details/73509107升级问题
相关注解说明:
实体@Entity注解
schema:告知GreenDao当前实体属于哪个schema
active:标记一个实体处于活跃状态,活动实体有更新、删除和刷新方法
nameInDb:在数据库中使用的别名,默认使用的是实体的类名
indexes:定义索引,可以跨越多个列
createInDb:标记创建数据库表
基础属性注解
@Id:主键 Long 型,可以通过@Id(autoincrement = true)设置自增长
@Property:设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@Property(nameInDb = “name”)
@NotNull:设置数据库表当前列不能为空
@Transient:添加此标记后不会生成数据库表的列
索引注解
@Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束
@Unique:向数据库添加了一个唯一的约束
关系注解
@ToOne:定义与另一个实体(一个实体对象)的关系
@ToMany:定义与多个实体对象的关系
https://www.jianshu.com/p/ec37ea99ef69
https://www.cnblogs.com/tonycheng93/p/6295724.html
https://blog.csdn.net/liuchao9876543210/article/details/54378859 (一)GreenDao3.0的简单使用