android greendao-2.0.0.jar,Android开源框架GreenDao3.0使用纪要

本文介绍了GreenDao 3.0在Android开发中的高效应用,包括其性能优势、内存管理、数据库加密和注解简化使用过程。通过实例演示如何配置Gradle、创建实体类、生成DAO并展示了核心操作方法。
摘要由CSDN通过智能技术生成

在android开发的过程中,免不了与数据库打交道,今天简单介绍一个orm的一个开源数据库框架GreenDao 3.0 的使用方法。GreenDao 优点:

1.性能高,号称Android最快的关系型数据库

2.内存占用小

库文件比较小,小于100K,编译时间低,而且可以避免65K方法限制

3.支持数据库加密 greendao支持SQLCipher进行数据库加密 有关SQLCipher可以参考这篇博客Android数据存储之Sqlite采用SQLCipher数 据库加密实战

4.简洁易用的API

GreenDao 3.0改动:

使用过GreenDao的同学都知道,3.0之前需要通过新建GreenDaoGenerator工程生成Java数据对象(实体)和DAO对象,非常的繁琐而且也加大了使用成本。

GreenDao 3.0最大的变化就是采用注解的方式通过编译方式生成Java数据对象和DAO对象。

现在网上有些教程配置不能正常运行,接下来的步骤都是亲自试验过的,并且最后会附上github项目给大家。

一、在工程目录下的build.gradle中这么配置:dependencies {

...

classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'

}

编写要入库的实体类,在3.0中,使用的注解的方式进行表的创建。GreenDaoUser:@Entity

public class GreenDaoUser {

@Id(autoincrement = true)

private Long id;

private String name;

private String address;

private String phone;

//此处省略了setter和getter方法

}

在应用module中的build.gradle加入如下配置:apply plugin: 'org.greenrobot.greendao'

greendao {

//数据库的schema版本,也可以理解为数据库版本号

schemaVersion 1

//设置DaoMaster、DaoSession、Dao包名,也就是要放置这些类的包的全路径。

daoPackage 'com.data.www.datasavedemo.entity'

//设置DaoMaster、DaoSession、Dao目录

targetGenDir 'src/main/java'

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

testCompile 'junit:junit:4.12'

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {

exclude group: 'com.android.support', module: 'support-annotations'

})

compile 'com.android.support:appcompat-v7:26.+'

compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha9'

compile 'org.greenrobot:greendao:3.0.1'

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

}

schemaVersion: 数据库schema版本,也可以理解为数据库版本号

daoPackage:设置DaoMaster 、DaoSession、Dao包名

targetGenDir:设置DaoMaster 、DaoSession、Dao目录

targetGenDirTest:设置生成单元测试目录

generateTests:设置自动生成单元测试用例

4.)实体@Entity注解

schema:告知GreenDao当前实体属于哪个schema

active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法

nameInDb:在数据中使用的别名,默认使用的是实体的类名

indexes:定义索引,可以跨越多个列

createInDb:标记创建数据库表

5.)基础属性注解

@Id :主键 Long型,可以通过@Id(autoincrement = true)设置自增长

@Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb=”name”)

@NotNul:设置数据库表当前列不能为空

@Transient :添加次标记之后不会生成数据库表的列

6.)索引注解

@Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束

@Unique:向数据库列添加了一个唯一的约束

7.)关系注解

@ToOne:定义与另一个实体(一个实体对象)的关系

@ToMany:定义与多个实体对象的关系

sync之后会发现在daoPackage这个目录下生成了几个类:DaoMaster、DaoSession、GreenDaoUserDao。

工具类DBmanager中的代码:/**

* 获取单例引用

*

*@param context

*@return

*/

public static DBManager getInstance(Context context) {

if (mInstance == null) {

synchronized (DBManager.class) {

if (mInstance == null) {

mInstance = new DBManager(context);

}

}

}

return mInstance;

}

private SQLiteDatabase getReadableDatabase() {

if (openHelper == null) {

openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);

}

SQLiteDatabase db = openHelper.getReadableDatabase();

return db;

}

/**

* 获取可写数据库

*/

private SQLiteDatabase getWritableDatabase() {

if (openHelper == null) {

openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);

}

SQLiteDatabase db = openHelper.getWritableDatabase();

return db;

}

public GreenDaoUserDao getWriteUserDao() {

DaoMaster daoMaster = new DaoMaster(getWritableDatabase());

DaoSession daoSession = daoMaster.newSession();

GreenDaoUserDao userDao = daoSession.getGreenDaoUserDao();

return userDao;

}

public GreenDaoUserDao getReadUserDao() {

DaoMaster daoMaster = new DaoMaster(getReadableDatabase());

DaoSession daoSession = daoMaster.newSession();

GreenDaoUserDao userDao = daoSession.getGreenDaoUserDao();

//前三行是关键,任何操作,增删改查都是在这个基础上进行的

return userDao;

}

//获取所有的User

public List getUsers(){

GreenDaoUserDao userDao = getReadUserDao();

QueryBuilder builder = userDao.queryBuilder();

List user = builder.list();

return user;

}

//插入User

public void insert(GreenDaoUser user){

GreenDaoUserDao userDao = getWriteUserDao();

userDao.insert(user);

}

//根据名字删除user

public void delete(String name){

GreenDaoUserDao userDao = getWriteUserDao();

userDao.deleteInTx(getusersByName(name));

}

//根据名字查询users

public List getusersByName(String name){

GreenDaoUserDao userDao = getReadUserDao();

List users = userDao.queryRaw("where name=?",new String[]{name});

return users;

}

//删除所有数据库记录

public void deleteAll(){

GreenDaoUserDao userDao = getWriteUserDao();

userDao.deleteAll();

}

注意,这里只列出了一部分场景,具体使用还需要根据自己的需求添加、修改。

getWriteUserDao(),getReadUserDao()是两个很重要的方法,在greendao使用的过程中,都是通过生成的XXXDao类进行增删改查的操作。

在activity中的使用:

manager = DBManager.getInstance(this);

manager.deleteAll();

项目源码

本文由【waitig】发表在等英博客 本文固定链接:Android开源框架GreenDao3.0使用纪要 欢迎关注本站官方公众号,每日都有干货分享!

点赞 (0)赏分享 (0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值