GreenDao使用

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的简单使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值