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 ...
随机推荐
- SPI和RAM IP核
学习目的: (1) 熟悉SPI接口和它的读写时序: (2) 复习Verilog仿真语句中的$readmemb命令和$display命令: (3) 掌握SPI接口写时序操作的硬件语言描述流程(本例仅以写 ...
- [na]完全理解icmp协议
1.ICMP出现的原因 在IP通信中,经常有数据包到达不了对方的情况.原因是,在通信途中的某处的一个路由器由于不能处理所有的数据包,就将数据包一个一个丢弃了.或者,虽然到达了对方,但是由于搞错了端口号 ...
- 随便浏览感觉简单易用的Orm
https://www.cnblogs.com/babietongtianta/p/4365195.html CYQ ITDOS CHOLE.ORM
- vue2.x 路由懒加载 优化打包体积
当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 结合 Vue 的异步组 ...
- (转)Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用 - 斯玛特琦
引言: 在使用 Unity3d 开发微端.或者网页游戏的时候常常须要将资源打包成 AssetBundle ,然后通过 www 的方式动态的下载资源.今天要分享的是我再动态下载 Animation 骨骼 ...
- 定义log_query_time的值
默认超过10秒的sql才会被记录在慢查询日志里.可以通过long_query_time控制.如果是临时修改:set global long_query_time=4;(把超过4秒的sql记录到慢查询日 ...
- How lock works?
Eliminating Synchronization-Related Atomic Operations with Biased Locking and Bulk Rebiasing http:// ...
- Java 用栈实现队列
栈是先入后出,队列是先入先出.根据这个思想,可以用一个栈作为入队,另一个栈作为出队.只要把第一个栈的栈顶的元素压入第二个栈就好了,出队的时候输出第二个栈的栈顶,如果第二个栈的空了就需要不断操作从第一个 ...
- linux netstat 统计连接数查看
服务器上的一些统计数据 1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数ps -ef|grep httpd|wc ...
- cmd命令操作Oracle数据库
//注意cmd命令执行的密码字符不能过于复杂 不能带有特殊符号 以免执行不通过 譬如有!@#¥%……&*之类的 所以在Oracle数据库设置密码是不要太复杂 /String Database ...