美文网首页
数据库框架GreenDao的使用

数据库框架GreenDao的使用

作者: Dale_Dawson | 来源:发表于2019-01-11 10:55 被阅读0次

    1.在项目的build.gradle中

    buildscript {
        repositories {
            jcenter()
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.3'
            classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
            classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
            // 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 {
        schemaVersion 1
        daoPackage 'products.xxxxx.com.greendaodemo.gen'
        targetGenDir 'src/main/java'
    }
    
    compile 'org.greenrobot:greendao:3.0.1'
    compile 'org.greenrobot:greendao-generator:3.0.0'
    

    3.在Application中设置

    /**
         * 设置greenDao
         */
        private void setDatabase() {
            // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
            // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
            // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
            // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
            mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
            db = mHelper.getWritableDatabase();
            // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
            mDaoMaster = new DaoMaster(db);
            mDaoSession = mDaoMaster.newSession();
        }
        public DaoSession getDaoSession() {
            return mDaoSession;
        }
        public SQLiteDatabase getDb() {
            return db;
        }
    

    4.创建数据库对应的实体类

    @Entity
    public class User {
        @Id
        private long id;
        private String name;
        @Transient
        private int tempUsageCount;
        public String getName() {
            return this.name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public long getId() {
            return this.id;
        }
        public void setId(long id) {
            this.id = id;
        }
        @Generated(hash = 1144922831)
        public User(long id, String name) {
            this.id = id;
            this.name = name;
        }
        @Generated(hash = 586692638)
        public User() {
        }
    
        
    }
    

    5.相关操作
    UserDao mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();

     public void add(){
            mUserDao.insert(new User((long) 12345,"DaleDawson"));//添加一个
     }
    
      public void reduce(){
            mUserDao.deleteByKey((long)12345);
        }
    
     public void modify(){
            User findUser = mUserDao.queryBuilder().where(UserDao.Properties.Name.eq("DaleDawson")).build().unique();
            if(findUser != null) {
                findUser.setName("who");
                mUserDao.update(findUser);
                Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "用户不存在", Toast.LENGTH_SHORT).show();
            }
        }
    
    public void serarch(){
            List<User> users = mUserDao.loadAll();
            String userName = "";
            for (int i = 0; i < users.size(); i++) {
                userName += users.get(i).getName()+",";
            }
        }
    

    1.)实体@Entity注解
    schema:告知GreenDao当前实体属于哪个schema
    active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法
    nameInDb:在数据中使用的别名,默认使用的是实体的类名
    indexes:定义索引,可以跨越多个列
    createInDb:标记创建数据库表
    2.)基础属性注解
    @Id :主键 Long型,可以通过@Id(autoincrement = true)设置自增长
    @Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb="name")
    @NotNul:设置数据库表当前列不能为空
    @Transient :添加次标记之后不会生成数据库表的列
    3.)索引注解
    @Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束
    @Unique:向数据库列添加了一个唯一的约束
    4.)关系注解
    @ToOne:定义与另一个实体(一个实体对象)的关系
    @ToMany:定义与多个实体对象的关系

    相关文章

      网友评论

          本文标题:数据库框架GreenDao的使用

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