GreenDao数据库框架

一、配置GreenDao

// In your root build.gradle file:
buildscript {
	repositories {
		jcenter()
		mavenCentral() // add repository
	}
	dependencies {
		classpath 'com.android.tools.build:gradle:3.1.1'
		classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
	}
}
 
// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
 
dependencies {
	implementation 'org.greenrobot:greendao:3.2.2' // add library
}

二、实体类

编写数据实体类

三、增删改查

1、增 insert(),insertOrReplace()数据存在则替换,不存在则插入

	a、生成daoSession对象:
		DaoSession daoSession = ((Application)getApplication()).getDaoSession();
	b、实体类存入数据set方法
	c、daoSession.insert(实体类对象);

2、删 delete() deleteAll()

	daoSession.delete(实体类对象);
	daoSession.deleteAll(实体类.class);

3、改 update()

	daoSession.update(实体类);

4、查 loadAll()所有数据 queryRaw()条件查询

	List<实体类> 实体类对象 = daoSession.loadAll(实体类.class);
	List<实体类> 实体类对象 = daoSession.queryRaw(实体类.class,"where column_name = ?",值);
	a、使用QueryBuilder进行查询操作
		QueryBuilder<实体类> qb = daoSession.queryBuilder(实体类.class);
		List<实体类> list = qb.list();//查询所有
		QueryBuilder<实体类> queryBuilder = qb.where(条件).orderAsc(column);
		List<实体类> list1 = queryBuilder.list();//查询条件对应
		//原始查询
		 Query<Student> query = daoSession.queryBuilder(Student.class).where(
            new WhereCondition.StringCondition("_ID IN " +
                    "(SELECT _ID FROM STUDENT WHERE _ID > 5)")
    ).build();

四、注解

@Entity 实体类 创建对应的表
	schema:如果你有多个架构,你可以告诉 GreenDao 当前属于哪个架构。
	active:标记一个实体处于活跃状态,活动实体有更新、删除和刷新方法。
	nameInDb:在数据中使用的别名,默认使用的是实体的类名。
	indexes:标记如果 DAO 应该创建数据库表(默认为true),如果您有多个实体映射到一个表,或者表的创建是在 greenDAO 之外进行的,那么将其设置为 false。
	createInDb:标记创建数据库表。
	generateGettersSetters:如果缺少,是否应生成属性的 getter 和 setter 方法。
	
@Id 主键 long / Long属性。
	在数据库方面,它是主键。参数autoincrement = true 表示自增,id 不给赋值或者为赋值为 null 即可(这里需要注意,如果要实现自增,id 必须是 Long,为 long 不行!)。
	
@Property 制定属性名
	@Property (nameInDb="name") 
	//数据库中的表格属性名为"name",如果不设置,数据库中表格属性名为"NAME"
	String name;
	
@NotNull 当前列不能为空

@Transient 使当前属性不生成数据库表的列

@Index 创建索引 name设置别名,unique设置唯一

@ToOne 定义与另一个实体(一个实体对象)的关系 @ToOne(joinProperty=“name”)

@ToMany 定义与多个实体对象的关系 @ToMany(referencedJoinProperty=“id”);

五、数据库加密——SQLCipher

1、导入加密库文件

	implementation 'net.zetetic:android-database-sqlcipher:版本号'

2、修改DaoSession的生成方式

	DaoMaster.DevopenHelper helper = new DaoMaster.DevOpenHelper(this,"数据库名.db");
	//数据库加密密码为
	Database db = helper.getEncryptedWritableDb("密码");
	DaoMaster daoMaster = new DaoMaster(db);
	daoSession = daoMaster.newSession();

总结

没有实践,就没有发言权。我没有实践,没有感悟,所有没有总结。

猜你喜欢

转载自blog.csdn.net/qq_39734865/article/details/88790304