美文网首页
GreenDao的初步探索

GreenDao的初步探索

作者: 举个小栗子0317 | 来源:发表于2018-09-06 16:03 被阅读0次

GreenDao的初步探索

开发环境:AS3.1.4,GreenDao3.2.2

1,配置

项目的build.gradle中,

dependencies {

    classpath 'com.android.tools.build:gradle:3.1.4'

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

}


module的build.gradle中,

apply plugin:'com.android.application'

apply plugin:'org.greenrobot.greendao'

greendao {

    schemaVersion 1    //数据库版本号

    daoPackage'com.example.mytest.gen'    //数据库包名

    targetGenDir'src/main/java'      //数据库目录

}

implementation 'org.greenrobot:greendao:3.2.2'

2,创建User类

新建一个User类

@Entity

public class User {

    @Id

    private Long id; 

    private String name;

}

@Entity:被Entry注解的JavaBean才能被GreenDao操控。

@ID:相当于主键,最好用long型。

Build后,在上面填写的gen目录下就有了三个文件夹。

3,创建数据库管理类

public class DaoManager {

    private static final String DB_NAME = "db_test";

    private static final String TAG = DaoManager.class.getSimpleName();

    private static volatile DaoManager daoManager;  //多线程 使用单例模式

    private static DaoMaster daoMaster;

    private static DaoSession daoSession;

    private static DaoMaster.DevOpenHelper helper;

    private Context context;

    private static final DaoManager instance = new DaoManager();

    /*

    * 构造方法* */

    public DaoManager() {

}

    /*

    * 使用单例模式 保证数据库的安全* */

    public static DaoManager getInstance() {

        return instance;

}

    /*

    * 初始化daomanager

* */

    public void init(Context context) {

        this.context = context;

}

    /**

    * 判断是否存在数据库,如果没有则创建数据库

    *

    * @return

    */

    public DaoMaster getDaoMaster() {

        if (daoMaster == null) {

            helper = new DaoMaster.DevOpenHelper(context, DB_NAME, null);

            daoMaster = new DaoMaster(helper.getWritableDatabase());

}

        return daoMaster;

}

    /**

    * 完成对数据库的添加 修改 查询 的操作 仅仅是一个接口

    *

    * @return

    */

    public DaoSession getDaoSession() {

        if (daoSession == null) {

            if (daoMaster == null) {

                daoMaster = getDaoMaster();

}

            daoSession = daoMaster.newSession();

}

        return daoSession;

}

    /*

    * 是否打印 数据库的日志信息 默认不开启* */

    public void setDebug(Boolean isDebug) {

        if (isDebug) {

            QueryBuilder.LOG_SQL = true;

            QueryBuilder.LOG_VALUES = true;

        } else {

            QueryBuilder.LOG_SQL = true;

            QueryBuilder.LOG_VALUES = true;

}

}

    /*

    * 关闭help

* */

    public void closeHelper() {

        if (helper != null) {

            helper.close();

            helper = null;

}

}

    /*

    * 关闭 会话* */

    public void closeSession() {

        if (daoSession != null) {

            daoSession.clear();

            daoSession = null;

}

}

    /*

    *  关闭所有的操作 数据库用完的时候必须关闭 节省资源*/

    public void closeConnection() {

        closeHelper();

        closeSession();

}

}

4,增删改查

UserDao userDao = DaoManager.getInstance().getDaoSession().getUserDao();

插入:

userDao.insert(u);

userDao.insertOrReplace(u);

批量插入:

List list_u = new ArrayList<>();

userDao.insertInTx(list_u);

更新:

userDao.update(u);

批量更新:

userDao.updateInTx(list_u);

删除:

userDao.deleteByKey("2");

userDao.delete(u);

删除所有:

userDao.deleteAll();

查询ID=1的数据:

QueryBuilder userQueryBuilder = userDao.queryBuilder();

List list = userQueryBuilder.where(UserDao.Properties.Id.eq("1")).list();

查询全部:

List users= userDao.loadAll();

//ID等于1并且name是张三的对象

User unique = userQueryBuilder.where(Properties.Id.eq(1)).where(Properties.Name.eq("zhangsan")).build().unique();

User zhangsan = userQueryBuilder.where(Properties.Id.eq(1), Properties.Name.eq("zhangsan")).build().unique();

//ID大于10的数据的个数

long count = userQueryBuilder.where(Properties.Id.ge(10)).buildCount().count();

//ID小于9的数据

List list_low9 = userQueryBuilder.where(Properties.Id.le(9)).build().list();

//ID在1-13之间,取5条数据

userQueryBuilder.where(Properties.Id.between(1, 13)).limit(5).build().list();


相关文章

  • GreenDao的初步探索

    GreenDao的初步探索 开发环境:AS3.1.4,GreenDao3.2.2 1,配置 项目的build.gr...

  • GreenDao的配置和初步使用

    GreenDao 数据库存储操作会耗时,大量的byte数据的存储会造成OOM 所以最好写在子线程中 第一步 首先我...

  • greenDAO与Realm的探索

    最近项目中要用到数据库相关的知识,就在网上查了下Android平台上的数据库框架,目前比较热门有GreenDAO和...

  • GreenDao缓存机制探索

    GreenDao是Android中使用比较广泛的一个orm数据库,以高效和便捷著称。在项目开发过程中遇到过好几次特...

  • RxBus 的初步探索

    前言 1月份项目上线了,之后就在优化项目结构,减少依赖。之前项目一直用的EventBus来作为项目事件流的框架,这...

  • SwiftUI 的初步探索

    学习路径: SwiftUI 官方文档[https://developer.apple.com/documentat...

  • 初步探索HLS

    HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。是苹...

  • 密钥(初步探索)

    转自博客:金融行业密钥详解 以下是自己对上面的博客的小结: 无需对银行卡的所有信息加密,只需对“账号”和“密码”加...

  • Shell 初步探索

    Shell概念 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命...

  • pygame初步探索

    https://www.bilibili.com/video/BV1XW411E7vb?p=1 一、python的...

网友评论

      本文标题:GreenDao的初步探索

      本文链接:https://www.haomeiwen.com/subject/kbwbwftx.html