Android Studio 菜鸟笔记本-Day 29-介绍Room资料库三种类别

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


<<:  资视就是力量 - Highcharts / 尾声

>>:  资料分析商业应用与策略管理 #笔记四

每个人都该学的30个Python技巧|技巧 21:set的处理方法(字幕、衬乐、练习)

上次教到新的容器叫做集合,那听到这个名称有没有想起来在高中时期的数学也有学过集合呢?那时候教到的交集...

[Day13] 时间处理

今日目标 限制帧数 Framerate Independent 设计错误 这个是我再次参考Game ...

[Day 04] 用 Exposed 和资料库进行串接

安装 Exposed 框架完成之後,再来我们要和资料库进行串接。 首先我们将原本的 main(){}...

Vue.js 从零开始:provide / inject

component传递的最後一个招,前面示范了由内传到外、外传到内...等,但是子元件的子元件的子元...

Day 24. VR菜单2

昨天打完程序码後,出现下面的Bug: Assets/LineRendererSetting.cs(5...