1、配置依赖包

    // Room
    def room_version = "1.1.0"
    api "android.arch.persistence.room:runtime:$room_version"
    api("android.arch.persistence.room:compiler:$room_version") {
        exclude group: 'com.google.code.gson'
    }

2、继承RoomDatabase

@android.arch.persistence.room.Database(
        entities = {
                PosUserT.class,

        },
        version = 1)
@TypeConverters(DateConverter.class)
public abstract class Database extends RoomDatabase {

    private static volatile Database INSTANCE;

    public abstract UserDao userDao();


//    static final Migration MIGRATION_1_2 = new Migration(1, 2) {
//        @Override
//        public void migrate(SupportSQLiteDatabase mDatabase) {
//            mDatabase.execSQL("ALTER TABLE DIS_SHOP_REMOVE_GOODS_T "
//                    + " ADD COLUMN OPER_GOODS_TYPE VARCHAR");
//        }
//    };

    public static Database getInstance(Context context) {
        if (INSTANCE == null) {
            synchronized (Database.class) {
                if (INSTANCE == null) {
                    INSTANCE = Room.databaseBuilder(context.getApplicationContext(), Database.class, "retail.db")
                            .allowMainThreadQueries()
                            .build();
//                    INSTANCE = Room.databaseBuilder(context.getApplicationContext(), Database.class, "retail.db")
//                            .addMigrations(MIGRATION_1_2).build();
                }
            }
        }
        return INSTANCE;
    }
}

allowMainThreadQueries()方法可以设置在UI线程操作数据库 addMigrations()数据库版本升级

3、建表

@Entity(tableName = "pos_user_t")
public class PosUserT {

    @NonNull
    @PrimaryKey()
    @ColumnInfo(name = "user_id")
    @SerializedName(value = "userid" , alternate = {"user_id",})
    public String userId;

	...
}

4、自定义DAO接口

@Dao
public interface UserDao extends BaseDao {

    @Query("SELECT user_password FROM pos_user_t WHERE user_code = :userCode")
    String queryPasswordByUserCode(String userCode);

    @Query("DELETE FROM pos_user_t WHERE user_code = :userCode")
    int deleteByUserCode(String userCode);

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    long insert(PosUserT user);

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    long[] insert(List<PosUserT> users);

    @Query("DELETE FROM pos_user_t")
    int deleteAll();

	...
	
}

5、使用

Database.getInstance(context).getUserDao().insert();