步骤一
build.gradle中添加room依赖:
官网地址:依赖
def room_version = "2.3.0"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
// optional - RxJava2 support for Room
implementation "androidx.room:room-rxjava2:$room_version"
// optional - RxJava3 support for Room
implementation "androidx.room:room-rxjava3:$room_version"
// optional - Guava support for Room, including Optional and ListenableFuture
implementation "androidx.room:room-guava:$room_version"
// optional - Test helpers
testImplementation "androidx.room:room-testing:$room_version"
步骤二
创建存储实体类:
@Entity
public class User {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo
private String name;
@ColumnInfo
private int age;
@ColumnInfo
private boolean isMan;
@ColumnInfo
private String address;
@ColumnInfo
private String remark;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isMan() {
return isMan;
}
public void setMan(boolean man) {
isMan = man;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
步骤三
创建Dao层,主要写一些增删改查的操作:
@Dao
public interface UserDao {
@Insert
void insertUser(User... users);
@Query("select * from User order by id desc")
List<User> searchUsers();
@Query("select * from User order by id desc limit :pageSize offset (:pageIndex - 1) * :pageSize")//分页查询
List<User> searchUsers(int pageIndex, int pageSize);
@Query("delete from User where name=:name")
void deleteByName(String name);
@Query("delete from User where id=:id")
void deleteByID(int id);
@Delete
void delete(User... users);
@Update
void update(User... users);
}
步骤四
创建dataBase层,方便直接使用数据库:
@Database(entities = {User.class}, version = 3, exportSchema = false)
public abstract class UserDataBase extends RoomDatabase {
private static String DB_NAME = "huifuUser.db";
private static volatile UserDataBase instance;
public static UserDataBase getInstance(Context context) {
if (instance == null) {
synchronized (UserDataBase.class) {
if (instance == null) {
instance = crate(context);
}
}
}
return instance;
}
private static UserDataBase crate(Context context) {
Migration migration1_2 = new Migration(1, 2) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("alter table User add column address text");
}
};
Migration migration2_3 = new Migration(2, 3) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("alter table User add column remark text");
}
};
return Room.databaseBuilder(context, UserDataBase.class, DB_NAME).allowMainThreadQueries().addMigrations(migration1_2, migration2_3).build();
}
public abstract UserDao getUserDao();
}
步骤五
使用:
//增加
User user = new User();
user.setName(ed_name.getText().toString());
user.setAge(Integer.parseInt(ed_age.getText().toString()));
user.setMan(ed_sex.getText().toString().equals("1"));
user.setAddress("上海市");
user.setRemark("备注信息");
UserDataBase.getInstance(this).getUserDao().insertUser(user);
//查询
List<User> list = UserDataBase.getInstance(this).getUserDao().searchUsers();