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