版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/c_he_n/article/details/82378529
1.背景简介
ORM数据库很多,如ormlite,activeorm,greenDao等等。Google也出了一款 room,对比了下orm数据库,网上也对比了room与其他orm框架的性能。
2.Room三大组件
- Database: 可以使用此组件创建数据库 holder,注释定义实体列表,和类的内容定义数据访问对象(DAO)数据库中的表。它也是基本连接的主要访问点。
- Entity: 实体类对象模型,一般一一对应表结构。实体的每个字段在数据库中都是保存的,除非你用@Ignore 注解。
- DAO: 数据库操作接口,一般一一对应表的相关操作
3.android studio gradle配置
在android build.gradle 中配置相应的依赖。
implementation "android.arch.persistence.room:runtime:1.0.0"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
4.代码实现
1.UserEntity
@Entity(tableName = "user_information_test")
public class UserEntity {
@PrimaryKey
private int uid;
@ColumnInfo(name = "username")
private String userName;
@ColumnInfo(name = "gender")
private String gender;
@ColumnInfo(name = "age")
private int age;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User(int uid, String userName, String gender, int age) {
this.uid = uid;
this.userName = userName;
this.gender = gender;
this.age = age;
}
2.Dao
@Dao
public interface UserDao {
@Query("select * from user_information_test")
List<User> getAll();
@Query("select * from user_information_test where :userName")
List<User> getUserByName(String userName);
@Insert()
void insertAll(User... users);
@Insert()
void insertList(List<User> userLists);
@Update()
void updateNameByUid(String uid);
}
3.database
@Database(entities = {User.class}, version = 1, exportSchema = false)
public abstract class AppDataBase extends RoomDatabase {
public abstract UserDao getUserDao();
}
4.MainActivity.class
AppDataBase appDataBase = Room.databaseBuilder(getApplicationContext(), AppDataBase.class, "/sdcard/user_information_test.db").build();
UserDao userDao = appDataBase.getUserDao();
for (int index = 3; index < 10003; index++) {
userDao.insertAll(new User(index, "refresh man", "male", 40));
}
5.注意事项
指的注意的是:
- “/sdcard/user_information_test.db”,若指定了路径则就保存到对应的路径,若没有则保存到data目录下。
- 不要表中套表操作
- 注意条件查找的格式 “:+字段”
- 数据库迁移升级,该怎么操作?