jetpack -数据库room使用

今天介绍谷歌推出的一个数据库room使用

1在工程的build里面添加下面依赖,注意你的工程需要指出androidX;如果不支持可以使用AS的Refactor切换支持

//    room数据依赖
    def room_version = "2.2.0"
    //room数据库
    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
    // For Kotlin use kapt instead of annotationProcessor
    // optional - Kotlin Extensions and Coroutines support for Room支持kotlin
//    implementation "androidx.room:room-ktx:$room_version"
    // optional - RxJava support for Room支持RXJava
    implementation "androidx.room:room-rxjava2:$room_version"
    // optional - Guava support for Room, including Optional and ListenableFuture 支持guava
    implementation "androidx.room:room-guava:$room_version"
    // Test helpers支持单元测试
    testImplementation "androidx.room:room-testing:$room_version"

 

//build通过说明可以开始使用数据库了。

 

//1创建表,创建个类使用@Entity注解(表名,不写以类名为表名);每张表必须定义个主键,使用@PrimaryKey(autoGenerate=true) 字段int类型;列使用ColumnInfo注解(name=列明)

/**
 * 注解entity 建表
 * <p>
 * 这就相当表的结构信息
 */

@Entity
public class Student {
    /**
     * 注意一张表必须有主键注解Primarykey 字段类型为int
     */
    @PrimaryKey(autoGenerate = true)
    private int uid;

    //列的信息 columnInfo
    @ColumnInfo(name = "name")
    private String name;

    @ColumnInfo(name = "password")
    private String password;

    @ColumnInfo(name = "addressId")
    private int addressId;

    /**
     * 注意字段必须有get set方法
     */

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAddressId() {
        return addressId;
    }

    public void setAddressId(int addressId) {
        this.addressId = addressId;
    }

    public Student(int uid, String name, String password, int addressId) {
        this.uid = uid;
        this.name = name;
        this.password = password;
        this.addressId = addressId;
    }

    @Override
    public String toString() {
        return "Student{" +
                "uid=" + uid +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", addressId=" + addressId +
                '}';
    }
}

 

//2创建一个数据操作接口类,进行增删改查;接口使用Dao注解 方法就是增删改查的方法

/**
 * 这就是数据访问对象
 * 用于操作数据的API
 * <p>
 * 使用注解Dao
 * <p>
 * 写增删改查的类
 */

@Dao
public interface StudentDao {

    /**
     * 查所有数据
     *
     * @return
     */
    @Query("select * from Student")
    List<Student> getAll();

    /**
     * 插入数据
     */
    @Insert
    void insert(Student... students);

}

//3创建个数据库抽象类,使用Database注解 (entities={表类},库版本号);注意类需要继承RoomBDatabse;

/**
 * 定义数据库
 *
 * 使用注解 @Database
 * entities对应的是 需要保存到数据库的 表类(注意每张表都需要添加进入,使用逗号分隔)
 * version 数据库的版本号
 *
 * 数据库需要继承RoomDatabase
 */
@Database(entities = {Student.class},version = 1)
public abstract class AppDatabase extends RoomDatabase {
    //定义个抽象方法获取表对象
    public abstract StudentDao userDao();

}

 

//4使用数据库,注意数据库操作需要在子线程里面,调用系统API。获取数据库类,在获取表操作类(增删改查类),

调用接口里面方法,实现对表的增删改查操作。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //注意网络操作,数据库操作需要在线程操作

        new Thread() {
            @Override
            public void run() {
                super.run();
                //操作数据库
                /**
                 * 调用系统API获取数据库
                 * 参数(上下文,数据库类,数控名称)
                 */
                AppDatabase appDatabase = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "AaronDB").build();

                //获取dao接口类
                StudentDao studentDao = appDatabase.userDao();

                //创建数据
                Student student = new Student(1, "张三", "1234", 100);
                //调用接口 插入数据方法
                studentDao.insert(student);
                //调用接口 查询所有数据方法
                List<Student> all = studentDao.getAll();

                Log.e("zdh", "-------------数据库" + all.toString());


            }
        }.start();

    }


}

 

//room的简单使用介绍到这。

源码地址https://github.com/zhudaihao/room

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值