博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
greendao数据库初次使用的配置及多表关联的初始化
阅读量:6501 次
发布时间:2019-06-24

本文共 3590 字,大约阅读时间需要 11 分钟。

1.在工程外层(Project)的build.gradle中添加依赖

1 buildscript { 2     repositories { 3         jcenter() 4     } 5     dependencies { 6         classpath 'com.android.tools.build:gradle:2.3.2' 7         //GreenDao3依赖 8         classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' 9     }10 }

 

2.在项目(Module,也就是app内层)的build.gradle中添加依赖

1 apply plugin: 'com.android.application' 2 //使用greendao 3 apply plugin: 'org.greenrobot.greendao' 4  5 android { 6     compileSdkVersion 23 7     buildToolsVersion "23.0.2" 8  9     defaultConfig {10         applicationId "com.handsome.didi"11         minSdkVersion 1412         targetSdkVersion 2313         versionCode 114         versionName "1.0"15     }16     //greendao配置17     greendao {18         //版本号,升级时可配置19         schemaVersion 1                             20     }21     buildTypes {22         release {23             minifyEnabled false24             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'25         }26     }27 }28 29 30 dependencies {31     compile fileTree(include: ['*.jar'], dir: 'libs')32     testCompile 'junit:junit:4.12'33     compile 'com.android.support:appcompat-v7:23.1.1'34     //greendao依赖35     compile 'org.greenrobot:greendao:3.2.0'36 }

到这里就配置成功了,同步编译(Sync Project)之后没毛病的话就可以往下创建bean类了。

1 @Entity 2 public class Shop{ 3  4     //不能用int 5     @Id(autoincrement = true) 6     private Long id; 7  8     //商品名称 9     @Unique10     private String name;11 12     //商品价格13     @Property(nameInDb = "price")14     private String price;15    16 }

这里创建了一个“商品”的实体类,(PS:主键是Long型,不是long哟)然后选择build——>make project,此时会自动为shop类生成构造方法和set、get方法,还有就是greendao操作的重要部分: DaoMaster、DaoSession、DAOS类,但是初次生成并不在src目录下,而是在这里

如果你想把它放入其他目录方便操作或查看的话,则在build.gradle刚刚配置的地方再加上几句

1     greendao {2         //版本号,升级时可配置3         schemaVersion 14        //文件目录5         targetGenDir 'src/main/java'6        //包名路径7         daoPackage 'com.sharley.greendaodemo.greendao'8     }

这样它就会自动移植过来了,复制到指定位置

 

 

下面示例说明一下多表关联中的一对多的情况

 比如我再新建一个实体类user,用户与商品之间成立关联关系,一个用户可购买多个商品,那么在user类中加入ToMany设置。

1 @Entity 2 public class User { 3  4     @Id(autoincrement = true) 5     private Long id; 6  7     private String name; 8  9     @ToMany(referencedJoinProperty = "sid")10     private List
shops;11 }

在shop类中再额外添加一个字段,即一对多时的外主键,注意一定要与user类的id相同

private Long sid;

make project后,user类除了之前说的方法之外还会额外生成一个getShops的方法

1     /** Used to resolve relations */ 2     @Generated(hash = 2040040024) 3     private transient DaoSession daoSession; 4     /** Used for active entity operations. */ 5     @Generated(hash = 1507654846) 6     private transient UserDao myDao; 7  8     /** 9      * To-many relationship, resolved on first access (and after reset).10      * Changes to to-many relations are not persisted, make changes to the target entity.11      */12     @Generated(hash = 355127918)13     public List
getShops() {14 if (shops == null) {15 final DaoSession daoSession = this.daoSession;16 if (daoSession == null) {17 throw new DaoException("Entity is detached from DAO context");18 }19 ShopDao targetDao = daoSession.getShopDao();20 List
shopsNew = targetDao._queryUser_Shops(id);21 synchronized (this) {22 if (shops == null) {23 shops = shopsNew;24 }25 }26 }27 return shops;28 }

然后,差不多就酱。

 参考:http://blog.csdn.net/qq_30379689/article/details/54410838#comments

 

转载于:https://www.cnblogs.com/Sharley/p/7510046.html

你可能感兴趣的文章
Centos 7使用vsftpd搭建FTP服务器
查看>>
tcpdump抓包文件提取http附加资源
查看>>
linux下SVN不允许空白日志提交
查看>>
第2周第1课
查看>>
docker制作镜像篇(基于容器)
查看>>
山寨c 标准库中的getline 函数
查看>>
shell时间
查看>>
pfSense book之2.4安装指南
查看>>
org.springframework.data.redis 一次连接获取特定key所有k-v(pipeline)
查看>>
[译稿]同步复制提议 2010-09
查看>>
windows 自动化目录大纲(各企业架构不一样,按需选择)
查看>>
我的友情链接
查看>>
【Visual C++】游戏开发笔记十三 游戏输入消息处理(二) 鼠标消息处理
查看>>
我的友情链接
查看>>
Java 使用 Redis
查看>>
JPA常用注解
查看>>
Java基础学习总结(1)——equals方法
查看>>
Maven学习总结(6)——Maven与Eclipse整合
查看>>
HTML5:理解head
查看>>
oracle
查看>>