记录greendao3.0的学习使用

本文介绍GreenDAO数据库框架的使用方法,包括配置依赖、编写实体类、执行增删改查操作及注解说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于greendao数据库的使用

Greendao是目前比较热门数据库框架,将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案。具备精简、性能最大化、内存开销最小化、易于使用的 APIs、等诸多有点,下面记录一下greendao的初步学习使用。使用只需要按照以下几步来做:

一、 通过项目app的moudle下的gradle引入依赖:

compile 'org.greenrobot:greendao:3.0.1'

compile 'org.greenrobot:greendao-generator:3.0.0'



二、  在App的moudle下的build.gradle中进行配置:



代码:

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
    }
}
greendao {
    schemaVersion 1
    daoPackage 'com.kevin.greendao3.greendao'
    targetGenDir 'src/main/java'
}

 

在gradle的根模块中加入上述代码后,sync project的时候,gradle会自动去maven仓库下载一个gradle的插件,当然了,这个插件就是为greenDAO服务的,用来生成数据库相关的代码。

 

其中的第三处配置greendao下面的是我们自定义的路径配置,(如果没有自定义生成的文件默认目录为:build/generated/source/greendao)

schemaVersion---->指定数据库schema版本号,迁移等操作会用到
daoPackage-------->通过gradle插件生成的数据库相关文件的包名,默认为你的entity所在的包名
targetGenDir-------->这就是我们上面说到的自定义生成数据库文件的目录了,可以将生成的文件放到我们的Java目录中,而不是build中,这样就不用额外的设置资源目录了

一、编写实体类

@Entity
public class User { 
@Id   
private Long id;    
private String name;   
@Transient    
private int tempUsageCount; // not persisted 
 
}
编写完成之后点击as中Build菜单栏中的Make Project,make完成之后会发现我们的User类中突然多了好多代码,这就是greenDAO自动为你生成的了,代码如下:
 
@Entity
public class User {    
@Id    
private Long id;    
private String name;    
@Transient    
private int tempUsageCount; // not persisted      
public String getName() {        
return this.name;    
}    
public void setName(String name) {        
this.name = name;    
}    
public Long getId() {        
return this.id;    
}    
public void setId(Long id) {        
this.id = id;    
}    
@Generated(hash = 873297011)    
public User(Long id, String name) {        
this.id = id;        
this.name = name;    
}    
@Generated(hash = 586692638)    
public User() {    }
}
同时在我们自定义的目录下面生成了三个类:


一、        增删改查操作

1、先需要获取操作数据库的对象(如:mUserDao)

获取devOpenHelper

//上下文,一般传MyApplication.getContext()
//数据库名
//CursorFactory一般传null

DevOpenHelper devOpenHelper = new DevOpenHelper(this    , "test-db"    , null);

获取DaoMaster

 //一个daoMaster代表一个数据库的连接
DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());

获取DaoSession
//DaoSessio可以得到操作各个entity的Dao对象操作对应数据库

// DaoSession可以创建多个,每一个都是属于同一个数据库连接的。
DaoSession daoSession = daoMaster.newSession();

获取Dao对象

//user表的数据库的操作的对象
mUserDao = daoSession.getUserDao();

// mPersonDao=daoSession.getPersonrDao()


2、获取了Dao对象我们就可以操作对应的数据库表了

※ 新增

直接加入一个entity对象

 

//插入一条数据
mUserDao.insert(new User(Long.valueOf(i + ""), "小强"));
Log.i("test", "添加了一个学生:小强" + i);

 

 

 

※ 删除

User user = new User();
user.setId(Long.valueOf("1"));
mUserDao.delete(user);
Log.i("test", "删除了一名学生:" + user.getName() + "id:" + user.getId());

 

 

※ 修改

//修改一名学生(当id是唯一字段且表中存在id为2的数据那么那个数据的名字将被修改为设置的名字)
User user1 = new User();
user1.setId(Long.valueOf("2"));
user1.setName("滕德兵");
mUserDao.update(user1);

 

 

※ 查询(最简单的查询,根据字段name来查询)

获得数据的集合

List<User>mlist=mUserDao.queryBuilder().where(Properties.Name.eq("滕德兵")).list();

//

 

五、greendao中的注解
(一) @Entity 定义实体
@nameInDb 在数据库中的名字,如不写则为实体中类名
@indexes 索引

@createInDb 是否创建表,默认为true,false时不创建
@schema 指定架构名称为实体
@active 无论是更新生成都刷新
(二) @Id
(三)@NotNull 不为null
(四) @Unique唯一约束
(五) @ToMany一对多
(六)@OrderBy 排序
(七) @ToOne 一对一
(八)@Transient 不存储在数据库中
(九)@generated 由greendao产生的构造函数或方法




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值