greendao3.0的引入

##greenDao 3的引入

  • 导入AS
    1. app module下build.gradle

        buildscript {
      
        dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
        }
        }
      
        apply plugin: 'org.greenrobot.greendao'
        dependencies {
        compile 'org.greenrobot:greendao:3.0.1'
         }
      

      也可以在project/build.gradle下添加

        buildscript {
        repositories {
        jcenter()
        }
        dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
        }
        }
      

###java 类

###注解: @Entity

###可配置的参数:

  1. schema
  2. active
    设置为active时,那么此entity有update/delete/refresh方法
  3. nameInDb
    指定在数据库中对应的表名称
  4. indexes:表示在本表下存在多个字段索引
  5. createInDb
    标识,默认为true,如果设置为false,则是指定多个实体对应一个表,或者表被创建在greenDao之外
注解: @Id

选择一个long/Long类型的属性做eneity ID,对应于数据库表中的主键

可配置的参数
  1. autoincrement
注解: @Property

对应于表中的字段,如果不设置,则默认java类属性对应相同的表字段

注解: @NotNull

使一个属性不为空在数据库表中

注解: @Transient

指定属性不具有持久性,仅仅使用一个暂时的状态

注解: @index

指定一个属性作为索引中的字段

可配置的参数
  1. name
    修改在索引中的字段名,不使用默认的
  2. unique
    使此字段的值唯一
注解: @Unique

给字段一个UNIQUE约束

注解: @ToOne

一对一

可配置的参数

joinProperty

注解: @ToMany

一对多

可配置的参数
  1. referencedJoinProperty2. joinProperties3. JoinEntity
注解: @Keep

保持不混淆

注意

默认自动生成的DaoMaster、DaoSession等文件在build/generated/source/greendao下,所以在build.gradle下 加上

sourceSets {
        main {
            java.srcDirs = ['src/main/java', 'build/generated/source/greendao']
        }
    }

也可以在build.gradle指定生成的位置,其他属性也可以指定

  1. schemaVersion 数据库的版本号

  2. daoPackage greendao生成的java类存放的包

  3. targetGenDir greendao生成的java类存放的位置,具体位置为 此位置+包

  4. targetGenDirTest 生成的测试类存放的位置

  5. generateTests 是否生成自动测试

以下为示例
greendao {
schemaVersion 1
daoPackage "com.amugua.mvptest.base.greendao"
targetGenDir "src/main/java"
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GreenDao是一个高效、轻量级、快速的ORM(对象关系映射)框架,可以方便地将Java对象映射到SQLite数据库中。下面是GreenDao引入和使用步骤: 1. 在build.gradle文件中添加以下依赖: ```groovy dependencies { implementation 'org.greenrobot:greendao:3.3.0' } ``` 2. 在app/build.gradle文件中添加以下配置: ```groovy android { defaultConfig { //... javaCompileOptions { annotationProcessorOptions { arguments = ["schemaVersion": "1", "daoPackage": "com.example.myapp.db"] } } } } greendao { schemaVersion 1 daoPackage 'com.example.myapp.db' targetGenDir 'src/main/java' } ``` 这些配置将告诉GreenDao在编译时生成DAO(数据访问对象)类。schemaVersion是数据库的版本号,daoPackage是生成DAO类的包名,targetGenDir是DAO类的生成目录。 3. 创建实体类,例如: ```java @Entity public class User { @Id(autoincrement = true) private Long id; private String name; private int age; // getters and setters } ``` @Entity注解表示这是一个实体类,@Id注解表示这是主键,autoincrement = true表示主键自增。 4. 在app/src/main/java目录下创建一个名为“greenDao”的包,并在该包下创建一个名为“DaoMasterOpenHelper”的类。该类继承自DaoMaster.OpenHelper,用于创建和升级数据库。例如: ```java public class DaoMasterOpenHelper extends DaoMaster.OpenHelper { public DaoMasterOpenHelper(Context context, String name) { super(context, name); } @Override public void onCreate(Database db) { super.onCreate(db); } @Override public void onUpgrade(Database db, int oldVersion, int newVersion) { // 数据库升级逻辑 } } ``` 5. 初始化GreenDao,在Application类的onCreate()方法中添加以下代码: ```java public class MyApp extends Application { private DaoSession daoSession; @Override public void onCreate() { super.onCreate(); DaoMasterOpenHelper helper = new DaoMasterOpenHelper(this, "mydb"); Database db = helper.getWritableDb(); daoSession = new DaoMaster(db).newSession(); } public DaoSession getDaoSession() { return daoSession; } } ``` 这里创建了一个DaoMasterOpenHelper实例,并通过它获取可写的数据库,然后创建一个DaoSession实例。 6. 使用GreenDao,例如: ```java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DaoSession daoSession = ((MyApp) getApplication()).getDaoSession(); User user = new User(); user.setName("Tom"); user.setAge(18); daoSession.getUserDao().insert(user); List<User> userList = daoSession.getUserDao().queryBuilder() .where(UserDao.Properties.Age.gt(10)) .orderAsc(UserDao.Properties.Age) .list(); } } ``` 这里通过getApplication()方法获取MyApp实例,然后通过getDaoSession()方法获取DaoSession实例。接着创建了一个User实例并插入到数据库中。最后使用查询构建器查询年龄大于10的所有用户,并按年龄升序排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值