数据库GreenDao

GreenDao配置以及基本使用

2019-12-10  本文已影响0人  Hello李昊男

// 添加代码仓库 步骤1

mavenCentral()

//greenDao生产代码插件 步骤2

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin

// apply plugin 步骤3

apply plugin: 'org.greenrobot.greendao'

//greenDAO配置添加依赖 步骤4

 implementation 'org.greenrobot:greendao:3.2.2' // add library
    implementation 'org.greenrobot:greendao-generator:3.2.2'

//greendao配置 步骤5 在buildTypes下面添加(数据库版本号可用来给数据库升级)

  greendao {
        //数据库版本号,升级时修改
        schemaVersion 1
        //生成的DAO,DaoMaster和DaoSession的包路径。默认与表实体所在的包路径相同
        daoPackage 'com.example.xts.greendaodemo.db'
        //生成源文件的路径。默认源文件目录是在build目录中的(build/generated/source/greendao)
        targetGenDir 'src/main/java'
    }

//第六步,
建bean类 实体类和数据库对应,添加相关注解,然后编译项目生成相关文件 锤项目(Make Project) 最常用的注解因该也就这是这些了吧

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


@Entity  //这里是使用到的注解
    public class Bean {
            @Id    //表示是表中的主键
            private Long id; //一定是Long型
            private String date;
            @Unique   //此字段的值唯一约束:不能重复
            private String name;
            private int step;
    }

//第七步,
创建一个自己的application类,在application中完成DaoSession的初始化,避免以后重复初始化,便于使用 ,,,要配置到清单中

public class BaseApp extends Application {
    private static BaseApp sInstance;
    private DaoMaster.DevOpenHelper mHelper;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    @Override
    public void onCreate() {
        super.onCreate();
        sInstance = this;
        setDatabase();
    }
        /**

   * 设置greenDao

     ​    private void setDatabase() {
     ​        //通过DaoMaster内部类DevOpenHelper可以获取一个SQLiteOpenHelper 对象
     ​        // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
     ​        // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
     ​        // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
     ​        // 此处MyDb表示数据库名称 可以任意填写
     ​        mHelper = new DaoMaster.DevOpenHelper(this, "MyDb", null);    // MyDb是数据库的名字,更具自己的情况修改
     ​        SQLiteDatabase db = mHelper.getWritableDatabase();
     ​        mDaoMaster = new DaoMaster(db);
     ​        mDaoSession = mDaoMaster.newSession();
     ​    }
     ​    public static BaseApp getInstance(){
     ​        return sInstance;
     ​    }
     ​    public DaoSession getDaoSession(){
     ​        return mDaoSession;
     ​    }

}

//第八步
在清单中使用此BaseApp

<application
        android:name=".BaseApp"
        android:allowBackup="true"/>

//第九步 使用,

BeanDao beanDao = BaseApp.getInstance().getDaoSession().getBeanDao();

得到对象完成数据库的创建,表的创建,

//插入数据
beanDao.insert(new Bean(1l,"2019-8-27","张三","添加"));
//查询所有数据
List<Bean> loadAll = beanDao.loadAll();
//删除所有数据
dao.deleteAll();
上一篇 下一篇

猜你喜欢

热点阅读