iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
0
Mobile Development

Android Studio 菜鳥筆記本系列 第 29

Android Studio 菜鳥筆記本-Day 29-介紹Room資料庫三種類別

  • 分享至 

  • xImage
  •  

Room

今天會介紹Android裡的Room資料庫中的類別有

  • Entity
  • DAO
  • Database

Entity

建立資料庫的表格

//@Entity標註用來表示資料庫的表格,並且tableName設置表格名稱
@Entity(tableName = "MyUser")
public class User {
    //@PrimaryKey標示這是一個主鍵,其屬性autoGenerate設置是否使ID自動累加
    @PrimaryKey(autoGenerate = true)
    private int id;
    private String name;
    private String phone;
    private String hobby;

    public User( String name, String phone, String hobby) {
        this.name = name;
        this.phone = phone;
        this.hobby = hobby;
    }
    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 String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getHobby() {
        return hobby;
    }
    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}

DAO(Data Access Object)

DAO是設置SQL語法的地方,裡面包含了最常見的 CURD(Create, Update, Read, Delete)方法。

public interface UserDao {
    String tableName="MyUser";
    //新增所有資料
    @Insert(onConflict = OnConflictStrategy.REPLACE)//預設萬一執行出錯時,REPLACE為覆蓋
    void insertData(User player);
    //撈取全部資料
    @Query("SELECT * FROM "+ tableName)
    List<User> getAllUsers();
    //更新資料
    @Update
    void updateData(User player);
    //刪除資料
    @Query(" DELETE  FROM " + tableName + " WHERE id = :id")
    void deleteData(int id);
}

在此可以使用@Insert、@Update、@Delete以及@Query等SQL語法。

Database

繼承RoomDatabase,並建立abstract class的資料庫

//@Database的entities:之前創建的data.class,version:資料庫版本,exportSchema:是否將資料導出至文件
@Database(entities = { User.class }, version = 1, exportSchema = false)
public abstract class UserDataBase extends RoomDatabase {

    private static final String DB_NAME ="UserDataBase.db";//資料庫名稱
    private static volatile UserDataBase instance;
    //使用synchronized能夠確保在同一個時間只有一個 Thread 進入UserDataBase
    public static synchronized UserDataBase getInstance( Context context){
        if (instance == null) {
            instance = create(context);//創立新的資料庫
        }
        return instance;
    }
    private static UserDataBase create(final Context context){
        return Room.databaseBuilder(context,UserDataBase.class,DB_NAME).build();
    }
    public abstract UserDao getUserDao();//創建DAO的抽象類
}

介紹Room資料庫三種類別就到此,謝謝大家。
/images/emoticon/emoticon37.gif


上一篇
Android Studio 菜鳥筆記本-Day 28 -設置時間
下一篇
Android Studio 菜鳥筆記本-Day 30 -感言
系列文
Android Studio 菜鳥筆記本30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言