Cadre de base de données GreenDao

1. Configurer 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
}

2. Classe d'entité

Écrire une classe d'entité de données

3. Ajouter, supprimer, modifier et vérifier

1. Ajoutez insert(), insertOrReplace() pour remplacer si les données existent et insérez si elles n'existent pas.

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

2、et delete() deleteAll()

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

3. Modifier la mise à jour()

	daoSession.update(实体类);

4. Vérifiez loadAll() toutes les données queryRaw() requête conditionnelle

	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();

4. Remarques

@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”);

5. Cryptage de la base de données – SQLCipher

1. Importez le fichier de la bibliothèque de chiffrement

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

2. Modifier la méthode de génération de DaoSession

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

Résumer

Sans pratique, il n’y a pas de droit de parole. Je n'ai aucune pratique, aucune idée et aucun résumé.

Je suppose que tu aimes

Origine blog.csdn.net/qq_39734865/article/details/88790304
conseillé
Classement