1. 程式人生 > >傻瓜式android Room教程

傻瓜式android Room教程

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目錄下。
  • 不要表中套表操作
  • 注意條件查詢的格式 “:+欄位”
  • 資料庫遷移升級,該怎麼操作?

參考