Android数据库Room的使用

步骤一
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();
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值