GreenDao的初步探索

2018-09-06  本文已影响0人  举个小栗子0317

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();


上一篇下一篇

猜你喜欢

热点阅读