GreenDao

作者: 小赵不在 | 来源:发表于2020-04-26 17:03 被阅读0次

    一、步骤

    1、在build.gradle(Project)中

      ①```mavenCentral() // 添加的代码```
      ②dependencies下添加GreenDao的插件```classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin```
    

    2、在build.gradle(Module)中

      ①插件```apply plugin: 'org.greenrobot.greendao' // apply plugin```
      ②依赖```implementation 'org.greenrobot:greendao:3.2.2' // add library```
      ③初始化GreenDao配置
          ```greendao{
            schemaVersion 1 //数据库版本号
            daoPackage 'com.example.day05.dao'  //数据库全路径  '自己的包名 applicationId.dao'
            targetGenDir 'src/main/java'  //存放位置
        }```
     解释:   schemaVersion--> 指定数据库schema版本号,迁移等操作会用到;
            daoPackage --> dao的包名,包名默认是entity所在的包;
            targetGenDir --> 生成数据库文件的目录;
    

    3、实体类(bean类)的 创建 与 注解

    public class StudentBean {
        @Id(autoincrement = true)
        private long id;
        @NotNull
        private String name;
        private int age;
    }
    
    @Entity   标识实体类,greenDAO会映射成sqlite的一个表,表名为实体类名的大写形式
    @Id 标识主键,该字段的类型为long或Long类型,autoincrement设置是否自动增长
    @Property       标识该属性在表中对应的列名称, nameInDb设置名称
    @Transient      标识该属性将不会映射到表中,也就是没有这列
    @NotNull         设置表中当前列的值不可为空
    @Convert         指定自定义类型(@linkPropertyConverter)
    @Generated 运行所产生的构造函数或者方法,被此标注的代码可以变更或者下次运行时清除
    @Index    使用@Index作为一个属性来创建一个索引;
    @JoinEntity     定义表连接关系
    @JoinProperty         定义名称和引用名称属性关系
    @Keep     注解的代码段在GreenDao下次运行时保持不变
    @OrderBy        指定排序方式
    @ToMany         定义与多个实体对象的关系
    @ToOne  定义与另一个实体(一个实体对象)的关系
    @Unique 向数据库列添加了一个唯一的约束
    
    /**
     * @Entity
     * @Id(autoincrement = true)  标志主键
     * @NotNull 标志这个字段不能是null
     * @Property(nameInDb = "User")
     * @Transient 表示不存储在数据库中
     * @Index(unique = true)
     * @Unique 用于标志列的值的唯一性。
     */
    

    4、文件生成:Build - > ReBuild Project

    二、使用

    • application:app的入口:全局上下文

      在manifest中application下添加 android:name=".GreenDaoApplication"
    public class GreenDaoApplication extends Application {
       private static GreenDaoApplication app;
       @Override
       public void onCreate() {
           super.onCreate();
           app = this;
       }
    
       public static GreenDaoApplication getApp() {
           return app;
       }
    }
    
    • 单例:single

       private static DbHelper single;
       private final StudentBeanDao studentBeanDao;
    
       //通过单例获取类的对象
       public static DbHelper getSingle() {
           if (single == null) {
               synchronized (DbHelper.class) {  //同步代码块
                   if (single == null) {
                       single = new DbHelper();
                   }
               }
           }
           return single;
       }
    
    private DbHelper() {
           //创建数据库
           DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(GreenDaoApplication.getApp(), "student.db");
           //获取读写对象
           DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
           //获取管理器
           DaoSession daoSession = daoMaster.newSession();
           //获取表对象
           studentBeanDao = daoSession.getStudentBeanDao();
       }
    
    • 增删改查

        public void insert(StudentBean studentBean) {
            studentBeanDao.insertOrReplace(studentBean);
        }
    
        public void delete(StudentBean studentBean) {
            studentBeanDao.delete(studentBean);
        }
    
        public List<StudentBean> selectAll() {
            List<StudentBean> list = studentBeanDao.queryBuilder().list();
            return list;
        }
    
        public void update(StudentBean studentBean) {
            studentBeanDao.update(studentBean);
        }
    
        private void update() {
            StudentBean studentBean = new StudentBean();
            studentBean.setId((long) 4);
            studentBean.setName("小红"+4);
            studentBean.setAge(String.valueOf(4));
            DbHelper.getInstance().update(studentBean);
        }
    
        private void query() {
            List<StudentBean> list = DbHelper.getInstance().queryAll();
            for (int i=0;i<list.size();i++){
                Log.e("TAG", "查询结果"+list.get(i).toString());
            }
        }
    
        private void delete() {
            StudentBean studentBean = new StudentBean();
            studentBean.setId((long) 5);
            studentBean.setName("赵仟"+5);
            studentBean.setAge(String.valueOf(5));
            DbHelper.getInstance().delete(studentBean);
        }
    
        private void insert() {
            for (int i=0; i<10; i++){
                StudentBean studentBean = new StudentBean();
                studentBean.setId((long) i);
                studentBean.setName("赵仟"+i);
                studentBean.setAge(String.valueOf(i));
                DbHelper.getInstance().insert(studentBean);
            }
    

    相关文章

      网友评论

          本文标题:GreenDao

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