美文网首页数据库GreenDao
GreenDao配置以及基本使用

GreenDao配置以及基本使用

作者: Hello李昊男 | 来源:发表于2019-12-10 07:28 被阅读0次

    // 添加代码仓库 步骤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();
    

    相关文章

      网友评论

        本文标题:GreenDao配置以及基本使用

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