美文网首页
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的初步探索

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