c-a*_*-an 0 android android-sqlite android-room
我正在使用房间。我需要使用 SELETC、INSERT、DELETE 全部。
这就是我实现的:
@Dao
interface UserDao {
@Query("SELECT * FROM user WHERE m_id IN (:m_id)")
fun loadAllByIds(userSeqs: IntArray?): List<User?>?
@Query("SELECT * FROM user")
val all: List<User?>?
}
Run Code Online (Sandbox Code Playgroud)
@Entity(tableName = "user")
data class User (
@PrimaryKey(autoGenerate = true) val seq: Long,
// this name is used in dao as column name
@ColumnInfo(name = "m_id") val mId: String?,
@ColumnInfo(name = "k_id") var kId: String?,
@ColumnInfo(name = "created_at") var createdAt: String?
)
Run Code Online (Sandbox Code Playgroud)
@Database(entities = {User.class}, version = 1, exportSchema = false)
public abstract class MyDatabase extends RoomDatabase {
public static final String DB_NAME = "MyDatabase.db";
private static MyDatabase INSTANCE;
public abstract UserDao userDao();
public static MyDatabase getMyDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context, MyDatabase.class, DB_NAME).build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
}
Run Code Online (Sandbox Code Playgroud)
@Query("SELECT * FROM deliver")说
这不适用于目标“没有支持字段或委托的成员属性”
@get:Query("SELECT * FROM deliver")让它消失。但是,我不知道为什么会这样。它能解决问题吗?它有什么作用?
注释@Query将放置在方法上。kotlin 属性是一种“字段 + getter 方法 + setter 方法”,但它本身不是字段或方法。当您通过 指定注释目标时@get:Query,您基本上是在告诉编译器将此注释放在属性的 getter 方法上,这使得整个过程正常进行。
| 归档时间: |
|
| 查看次数: |
3692 次 |
| 最近记录: |