傻瓜式android Room教程
阿新 • • 發佈:2018-12-18
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目錄下。
- 不要表中套表操作
- 注意條件查詢的格式 “:+欄位”
- 資料庫遷移升級,該怎麼操作?