如何在安卓X使用注解数据库

第一步,添加依赖

implementation "androidx.room:room-runtime:2.2.4" annotationProcessor"androidx.room:room-compiler:2.2.4"

第二步,写一个pojo(我也不知道这个能不能叫pojo)做表
1.类用@Entity修饰,里面写上tablename,对,一个Entity类就是一张表(目前看来是这样)
2.成员变量就是一个个列,写不写gettersetter无所谓,随便你,只要你能引用的到就行
3.主键是@PrimaryKey修饰,还可以这样写
@PrimaryKey(autoGenerate = true)

这是自增
4.只要用@Entity修饰的类,就可以是一个表,其他什么都没有都可以(只不过是空表),还有,里面写什么都行,所以想掌握表的写法,只要会写bean,domain,pojo就行了,外面加个@Entity
package com.iallchain.myphoneglasses.DB; import androidx.annotation.NonNull; import androidx.room.Entity; import androidx.room.PrimaryKey; @Entity(tableName = "userinfo") public class UserInfo { @PrimaryKey @NonNull public String uuid; public String name; public UserInfo() {}public UserInfo(String uuid, String name) { this.uuid = uuid; this.name = name; }@NonNull @Override public String toString() { return "UserInfouuid:" + uuid + "name:" + name; } }

第三布、写dao
1.dao一定是interface,里面的方法加上增删改查的注解就可以了,至于怎么用这个dao去搜东西,插入东西,后面会提到
2.和@Entity创建表一样,只要在interface上加@dao就可以了,至于增删改查的操作,传入的数据写在方法括号里(参数)里,返回的数据用类接受,他会自动填充,高级一点的,有些多表查询出来的奇形怪状的数据,自己想个办法创建一个@Entity修饰的类,对,很麻烦。
【如何在安卓X使用注解数据库】3.如果想实现复杂的功能,一定要会sql语句,这也不难其实
package com.iallchain.myphoneglasses.DB.Dao; import androidx.room.Dao; import androidx.room.Delete; import androidx.room.Insert; import androidx.room.Query; import androidx.room.Update; import com.iallchain.myphoneglasses.DB.UserInfo; import java.util.List; @Dao public interface UserDao { @Insert void addAUser(UserInfo ui); @Delete void removeAUser(UserInfo ui); @Update void updateAUser(UserInfo ui); @Query("select * from userinfo where uuid=:id") UserInfo queryAUser(String id); @Query("select * from userinfo") List queryUser(); }

第四步、写数据库
1.数据库是一个抽象类,继承自RoomDatabase
2.注解@Database也要有,@Database里面写上@Entity注解的类的class,就会生成对应的表,其他参数一个是版本号,另一个不知道是啥直译是“出口模式”(exportSchema)
3.一定要有的,就是那个抽象的方法,通过这个方法可以获得dao,有几个dao类,就写几个方法
4.为了方便得到这个数据库实例和dao的引用,我写了“为了方便”之间的内容
BugApp.getContext()

获得的是context,这里你随便从哪里找来一个context都行
allowMainThreadQueries

是为了允许在主线程操作数据库
package com.iallchain.myphoneglasses.DB; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; import com.iallchain.myphoneglasses.DB.Dao.UserDao; import com.rulerbug.firstlibrary_x.Utils.BugApp; @Database(entities = {UserInfo.class}, version = 1, exportSchema = false) public abstract class UserDatabases extends RoomDatabase {//必要的开始 public abstract UserDao UserDao(); //必要的结束//为了方便开始 public static UserDatabases db; public static UserDatabases getInstance() { synchronized (UserDatabases.class) { if (db == null) { synchronized (UserInfo.class) { db = Room.databaseBuilder(BugApp.getContext(), UserDatabases.class, "userDB").allowMainThreadQueries().build(); } } } return db; }public static UserDao getUserDao() { return getInstance().UserDao(); } //为了方便结束 }


    推荐阅读