美文网首页
greenDao使用

greenDao使用

作者: CloudFlyKing | 来源:发表于2017-06-13 16:06 被阅读0次

    GreenDao 介绍:

    greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。
    官网地址:http://greenrobot.org/greendao/
    github:https://github.com/greenrobot/greenDAO

    GreenDao3.2使用方法

    1.在项目的build.gradle添加如下配置

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.0'
            classpath  'org.greenrobot:greendao-gradle-plugin:3.2.1'//greendao
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    

    2.在app/build.gradle添加如下代码

    apply plugin: 'org.greenrobot.greendao'//greendao
    
     greendao {
            schemaVersion 1//数据库schema版本号,通过*OpenHelpers迁移数据,schema改变值增加。默认为1
            daoPackage 'com.bupt.greeddaotest.dao'//生成DAOs、DaoMaster、DaoSession的包名。默认为entities所在包名。
            targetGenDir 'src/main/java'//生成DAOs、DaoMaster、DaoSession的目录。默认为build/generated/source/greendao
     }
    
    dependencies {
             compile 'org.greenrobot:greendao:3.2.0'
    }
    

    3.新建实体

    @Entity
    public class User {
        @Id(autoincrement = true)
        private Long id;
        @NotNull
        private String username;
        private int age;
        private String sex;
        private String address;
    }
    
    

    其中
    @Entity 用于标识这是一个需要Greendao帮我们生成代码的bean
    @Id 标明主键,括号里可以指定是否自增
    @NotNull 非空
    此时编译一下自动生成DaoMaster 、DaoSession、Dao,如图所示 :

    4.数据库版本升级

    数据库版本升级使用了辅助库GreenDaoUpgradeHelper
    github:https://github.com/yuweiguocn/GreenDaoUpgradeHelper
    1)在项目的build.gradle添加

    allprojects {
        repositories {
            jcenter()
            maven { url "https://jitpack.io" }//使用数据库升级辅助GreenDaoUpgradeHelper时添加
        }
    }
    

    2)在app/build.gradle添加

    dependencies {
            // 使用数据库升级辅助GreenDaoUpgradeHelper时添加
        compile 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v1.3.0'
    }
    

    3)新建如下类

    public class MySQLiteOpenHelper extends DaoMaster.OpenHelper {
        public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
            super(context, name, factory);
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            super.onUpgrade(db, oldVersion, newVersion);
            MigrationHelper.migrate(db,UserDao.class);//版本升级
        }
    }
    
    

    一个简单的实例

    1)在自定义application里面设置数据库

    public class MeApplication extends Application {
    
        private static MeApplication application;
        private MySQLiteOpenHelper openHelper;
        private Database db;
        private DaoMaster daoMaster;
        private DaoSession daoSession;
        public static String database_name = "record-db";
    
    
        @Override
        public void onCreate() {
            super.onCreate();
            application = this;
            setDatabase();
        }
    
        private void setDatabase() {
            openHelper = new MySQLiteOpenHelper(this, database_name, null);
            db = openHelper.getWritableDatabase();//获取可写数据库
            daoMaster = new DaoMaster(db);
            daoSession = daoMaster.newSession();
        }
    
        public static MeApplication getMeApplication(){
            return application;
        }
    
        public DaoSession getDaoSession() {
            return daoSession;
        }
    
    
        public Database getDb() {
            return db;
        }
    }
    

    2)插入数据

    /**
         * 插入一条记录
         *
         */
        public void insertUser(UserDao userDao,User user) {;
            userDao.insert(user);
        }
    
        /**
         * 插入用户集合
         *
         */
        public void insertUsers(UserDao userDao,List<User> users) {
            if (users == null || users.isEmpty()) {
                return;
            }
            userDao.insertInTx(users);
        }
    

    3)删除数据

    /**
         * 删除一条记录
         *
         */
        public void deleteUser(UserDao userDao,User user) {
            userDao.delete(user);
        }
    
    /**
         * 删除用户集合
         *
         */
        public void deleteUsers(UserDao userDao,List<User> users) {
            if (users == null || users.isEmpty()) {
                return;
            }
            userDao.deleteInTx(users);
        }
    

    4)更新数据

    /**
         * 更新一条记录
         *
         */
        public void updateUser(UserDao userDao,User user) {
            userDao.update(user);
        }
    /**
         * 更新用户集合
         *
         */
        public void updateUsers(UserDao userDao,List<User> users) {
            if (users == null || users.isEmpty()) {
                return;
            }
            userDao.updateInTx(users);
        }
    

    5)查询数据

    /**
         * 查询用户列表
         */
        public List<User> queryUsers(UserDao userDao) {
            List<User> list = userDao.queryBuilder().list();
            return list;
        }
    /**
         * 查询用户列表
         */
        public List<User> queryUsers(UserDao userDao,int age) {
            //按照年龄从小到大排列
            List<User> list = userDao.queryBuilder().where(UserDao.Properties.Age.gt(age)).orderAsc(UserDao.Properties.Age).list();
            return list;
        }
    

    相关文章

      网友评论

          本文标题:greenDao使用

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