greendao数据库初次使用的配置及多表关联的初始化
1.在工程外层(Project)的build.gradle中添加依赖
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
//GreenDao3依赖
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
}
}
2.在项目(Module,也就是app内层)的build.gradle中添加依赖
apply plugin: 'com.android.application'
//使用greendao
apply plugin: 'org.greenrobot.greendao' android {
compileSdkVersion
buildToolsVersion "23.0.2" defaultConfig {
applicationId "com.handsome.didi"
minSdkVersion
targetSdkVersion
versionCode
versionName "1.0"
}
//greendao配置
greendao {
18 //版本号,升级时可配置
19 schemaVersion 1
20 }
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
} dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
//greendao依赖
compile 'org.greenrobot:greendao:3.2.0'
}
到这里就配置成功了,同步编译(Sync Project)之后没毛病的话就可以往下创建bean类了。
@Entity
public class Shop{ //不能用int
@Id(autoincrement = true)
private Long id; //商品名称
@Unique
private String name; //商品价格
@Property(nameInDb = "price")
private String price; }
这里创建了一个“商品”的实体类,(PS:主键是Long型,不是long哟)然后选择build——>make project,此时会自动为shop类生成构造方法和set、get方法,还有就是greendao操作的重要部分: DaoMaster、DaoSession、DAOS类,但是初次生成并不在src目录下,而是在这里
如果你想把它放入其他目录方便操作或查看的话,则在build.gradle刚刚配置的地方再加上几句
greendao {
//版本号,升级时可配置
schemaVersion
//文件目录
targetGenDir 'src/main/java'
//包名路径
daoPackage 'com.sharley.greendaodemo.greendao'
}
这样它就会自动移植过来了,复制到指定位置
下面示例说明一下多表关联中的一对多的情况
比如我再新建一个实体类user,用户与商品之间成立关联关系,一个用户可购买多个商品,那么在user类中加入ToMany设置。
@Entity
public class User { @Id(autoincrement = true)
private Long id; private String name; @ToMany(referencedJoinProperty = "sid")
private List<Shop> shops;
}
在shop类中再额外添加一个字段,即一对多时的外主键,注意一定要与user类的id相同
private Long sid;
make project后,user类除了之前说的方法之外还会额外生成一个getShops的方法
/** Used to resolve relations */
@Generated(hash = )
private transient DaoSession daoSession;
/** Used for active entity operations. */
@Generated(hash = )
private transient UserDao myDao; /**
* To-many relationship, resolved on first access (and after reset).
* Changes to to-many relations are not persisted, make changes to the target entity.
*/
@Generated(hash = )
public List<Shop> getShops() {
if (shops == null) {
final DaoSession daoSession = this.daoSession;
if (daoSession == null) {
throw new DaoException("Entity is detached from DAO context");
}
ShopDao targetDao = daoSession.getShopDao();
List<Shop> shopsNew = targetDao._queryUser_Shops(id);
synchronized (this) {
if (shops == null) {
shops = shopsNew;
}
}
}
return shops;
}
然后,差不多就酱。
参考:http://blog.csdn.net/qq_30379689/article/details/54410838#comments
greendao数据库初次使用的配置及多表关联的初始化的更多相关文章
- Android数据库高手秘籍(三)——使用LitePal升级表
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/39151617 在上一篇文章中,我们学习了LitePal的基本使用方法,体验了使用框 ...
- SQL Server 2016的数据库范围内的配置
SQL Server 2016真的让人眼前一亮.几天前微软就提供了RCO(候选发布版)版本的下载.我已经围观了一圈RCO版本,其中一个最拽的功能是数据库范围内的配置(Database Scoped C ...
- [转] Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置
from: http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得 ...
- Linux学习之CentOS--CentOS6.4下Mysql数据库的安装与配置【转】
如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--C ...
- Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置
原文:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建好j ...
- SSD Cloud Hosting–Linode-Mysql数据库的安装与配置
接着上一篇的话题:SSD Cloud Hosting - Linode的配置和部署,搭建Java环境 8.Mysql数据库的安装与配置 安装 检查yum里边有没有mysql: yum list|gre ...
- Linux学习之CentOS6下Mysql数据库的安装与配置
转自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建好j ...
- Linux CentOS6.4下Mysql数据库的安装与配置
一.mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱 ...
- CentOS6.4/6.7下Mysql数据库的安装与配置(转载)
通过RPM方式 给centos 安装mysql 最好有光盘,呵呵,网络也可以下载rpm安装包,不过文件较大. 1 挂载光盘 mount /dev/cdrom /mnt/cdrom/mount: b ...
随机推荐
- telegraf input的配置
.操作系统基础监控指标配置标准 基础监控使用通用的全局配置文件telegraf.conf,以下只贴上采集器input部分代码 telegraf -config /etc/telegraf/telegr ...
- django——文件上传_分页_ajax_富文本_celery
上传文件 概述 当Django在处理文件上传时,文件的数据被存储在request.FILES属性中 FILES只有在请求的方法为POST且提交的form表单带有enctype="multip ...
- 菜鸟学SSH(三)——Struts2国际化自动检测浏览器语言版
前几天发了一篇Struts国际化的博客——<菜鸟学习SSH(二)——Struts2国际化手动切换版>,有网友提了一个意见,见下图: 于是就有了下面修改的版本: web.xml <?x ...
- 为什么我们做分布式要使用Redis
绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知.这里对 Redis 常见问题做一个总结,解决 ...
- 深入源码分析Java线程池的实现原理
程序的运行,其本质上,是对系统资源(CPU.内存.磁盘.网络等等)的使用.如何高效的使用这些资源是我们编程优化演进的一个方向.今天说的线程池就是一种对CPU利用的优化手段. 通过学习线程池原理,明白所 ...
- update set where exists 多表更新 在mssql、MySQL、Oracle中分别用法
MySQL: UPDATE ChgCfm t1 INNER JOIN tb_dz_file t2 ON t1.ID = t2.ID ' SQLserver: FROM ChgCfmRcd t1 ' F ...
- linux怎么关闭iptables linux如何关闭防火墙
Linux系统下面自带了防火墙iptables,iptables可以设置很多安全规则.但是如果配置错误很容易导致各种网络问题,那么如果要关闭禁用防火墙怎么操作呢,咗嚛本经验以centos系统为例演示如 ...
- Mac OS安装git
mac系统在AppStore里下载最新的Xcode,目前最新版本是Version 8.3.1 (8E1000a), 由于最新版的Xcode里已集成了git,所以下载后可直接在终端使用git了.
- Beef-xss
Beef xss beef安装目录:/usr/share/beef-xss UI URL: http://IP:3000/ui/panel Hook: <script src="htt ...
- [AWS vs Azure] 云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析
云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析 在虚拟机创建完成之后,CPU和内存的配置等等基本上是一目了然的.如果不考虑显卡性能,一台机器最重要的性能瓶颈就是硬盘. ...