RoomSqLExample
Android JetPack 推荐的SqLite 框架 Room
注意:Room 调用Dao 增删该查 需要在 子线程中执行
导入:
def room_version = "1.1.1"
implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
表:
@Entity(tableName = "userBean")
public class UserBean {
@PrimaryKey(autoGenerate = true)
private int id;
private String userName;
private String password;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Dao接口:
@Dao
public interface UserDao {
@Query("SELECT * FROM userBean")
List<UserBean> getAllUserBeans();
@Insert
void insert(UserBean... UserBeans);
@Update
void update(UserBean... UserBeans);
@Delete
void delete(UserBean... UserBeans);
}
Database
@Database(entities = {UserBean.class}, version = 1, exportSchema = false)
public abstract class AppDatebase extends RoomDatabase {
private static final String DB_NAME = "AppDatebase.db";
private static volatile AppDatebase instance;
static synchronized AppDatebase getInstance(Context context) {
if (instance == null) {
instance = create(context);
}
return instance;
}
private static AppDatebase create(final Context context) {
return Room.databaseBuilder(
context,
AppDatebase.class,
DB_NAME).build();
}
public abstract UserDao getUserDao();
}
数据库升级 迁移数据:
static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL("CREATE TABLE `Fruit` (`id` INTEGER, "
+ "`name` TEXT, PRIMARY KEY(`id`))");
}
};
static final Migration MIGRATION_2_3 = new Migration(2, 3) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE Book "
+ " ADD COLUMN pub_year INTEGER");
}
};
Room.databaseBuilder(getApplicationContext(), MyDb.class, "database-name")
.addMigrations(MIGRATION_1_2, MIGRATION_2_3).build();