文档章节

android geendao简单使用

o
 osc_g8254g7s
发布于 2019/08/19 17:11
字数 510
阅读 11
收藏 0

精选30+云产品,助力企业轻松上云!>>>

引入依赖

implementation 'org.greenrobot:greendao:3.2.2'
implementation 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v2.1.0' //升级迁移数据库时使用

在根目录下的build.gradle文件的buildscript-》dependencies 里加入
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'

在app目录下的build.gradle文件加入

apply plugin: 'org.greenrobot.greendao'
android 标签下加入
greendao {
        schemaVersion 1    //版本号
        daoPackage 'com.test.testapp.greendao.gen' //dao生成位置
        targetGenDir 'src/main/java' //设置DaoMaster、DaoSession、Dao目录
    }

创建实体类

@Entity
public class User {

    @Id
    @Unique
    private String id;
    private String username;
    private String name;
    private Integer sex;

}

在application里进行初始化操作

public class MyApp extends Application{
    public static MyApp instance;
    private SQLiteDatabase db;
    private DaoSession mDaoSession;

    @Override
    public void onCreate() {
        instance = this;
        setDatabase();
    }

    public static MyApp getInstances(){
        return instance;
    }

    private void setDatabase() {
        // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
        // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO已经帮你做了。
        // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
        // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
        // mHelper = new DaoMaster.DevOpenHelper(this, "test.db", null);

        DBHelper mHelper = new DBHelper(this, "text.db", null);
        db = mHelper.getWritableDatabase();
        // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
        DaoMaster mDaoMaster = new DaoMaster(db);
        mDaoSession = mDaoMaster.newSession();
    }

    public DaoSession getDaoSession() {
        return mDaoSession;
    }
}


public class DBHelper extends DaoMaster.OpenHelper {

    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
        super(context, name, factory);
    }

    @Override
    public void onUpgrade(Database db, int oldVersion, int newVersion) {
        super.onUpgrade(db, oldVersion, newVersion);
        /**
         * com.github.yuweiguocn:GreenDaoUpgradeHelper:v2.1.0
         * 安全更新数据库
         * UserDao.class
         * 这些是安全更新的表的dao
         * 需要安全更新的数据表都dao要放到这里
         */
        MigrationHelper.migrate(db, new MigrationHelper.ReCreateAllTableListener() {
            @Override
            public void onCreateAllTables(Database db, boolean ifNotExists) {
                DaoMaster.createAllTables(db, ifNotExists);
            }
            @Override
            public void onDropAllTables(Database db, boolean ifExists) {
                DaoMaster.dropAllTables(db, ifExists);
            }
        },UserDao.class);
    }
}

 

执行编译操作相应的类就自动生成好了 DaoMaster DaoSession 相关的dao类这里是 UserDao  还有User的set get方法和构造器都生成好了

下面可以进行数据库操作了

UserDao userDao = MyApp.getInstances().getDaoSession().getUserDao();
userDao.insertOrReplace(user);

List list = userDao.queryBuilder()             .where(UserDao.Properties.Name.eq("张三")).offset(0)
                    .limit(20).orderDesc(UserDao.Properties.Name).list();

其他方法查看AbstractDao类即可

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Android分类导航

新的一年,将在2017下半年所写的博文作了个总结,也是方便自己以后查阅,整理完也是发现在这半年而是学到了许多,新的一年,继续努力! 我的第一个Android开源库——CirclePointMove中文文档...

osc_zrrg1637
2018/02/27
2
0
为开发人员准备的 10 个 Android 教程

1. OpenGL ES 2.0 该教程为你展示如何使用 OpenGL ES 2.0 API 开发简单的 Android 应用,执行一些基本的图形操作。 2. Android Development Tutorial 该教程展示使用Eclipse开发Android应用,...

鉴客
2011/09/21
2.1K
6
Android LiveData简介(一)

Android LiveData简介(一) 使用Android的LiveData,需要在gradle添加引用: (二)构建Observer,在Observer的onChanged中等待变化数据传导过来。 在LiveData中的数据变化,通过postValue...

开开心心过
2017/11/21
0
0
Android必备:Activity 活动 和 Intent 意图 的学习整理

看这里:Android必备:Activity 活动 和 Intent 意图 的学习整理 在Android必备:Android UI控件的了解与学习中,对AndroidUI做了初步的了解和学习,本篇继续进行Android开发学习的整理。And...

Realfighter
2015/03/04
510
0
Android零基础入门第83节:Activity间数据传递方法汇总

在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递。 一、常用数据类型 在前面几节我们只学习了一些常用类型的数...

鑫鱻
2017/10/25
42
0

没有更多内容

加载失败,请刷新页面

加载更多

如果你失明了,你怎么编程? - How can you program if you're blind?

问题: Sight is one of the senses most programmers take for granted. 视觉是大多数程序员认为理所当然的感官之一。 Most programmers would spend hours looking at a computer monitor......

技术盛宴
59分钟前
16
0
如何删除使用Python的easy_install安装的软件包? - How do I remove packages installed with Python's easy_install?

问题: Python's easy_install makes installing new packages extremely convenient. Python的easy_install使安装新包非常方便。 However, as far as I can tell, it doesn't implement th......

fyin1314
今天
11
0
如何将逗号分隔的字符串转换为数组? - How to convert a comma separated string to an array?

问题: I have a comma separated string that I want to convert into an array, so I can loop through it. 我有一个逗号分隔的字符串,我想将其转换成数组,因此可以循环遍历它。 Is the...

富含淀粉
今天
13
0
深源恒际:担心个人身份被冒用?不存在!

本文作者:c****t 近日,苟晶被冒名顶替身份参加高考的事件在社会各界掀起广泛热议。事件调查结果公布后,舆论风向逆转,吃瓜群众认为当事人夸大其词消费了公众情绪,一边对当事人所遭遇的不...

百度开发者中心
昨天
5
0
CKEditor 5 + SpringBoot实战(三):SpringData JPA数据持久化

在本系列的文章中,我将介绍如何在Spring Boot Application中使用CKEditor编辑器。介绍的内容包括基本环境的搭建,文件上传,SpringData JPA数据持久化,CKEditor5的安装,CKEditor图片上传,...

树下魅狐
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部