android room

it2025-02-25  34

 

注意点: 

1. gradle 中加入 'kotlin-kapt' 插件,  依赖加入  

implementation "androidx.work:work-runtime:2.2.0" kapt "androidx.room:room-compiler:2.1.0"

2. 主activity 中用thread 执行。 

package com.example.testroom import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase @Database(version = 3, entities = [User::class], exportSchema = false) abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao companion object { private val MIGRATION_1_2 = object : Migration(1, 2) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("create table Book (id integer primary key autoincrement not null, name text not null, pages integer not null)") } } private val MIGRATION_2_3 = object : Migration(2, 3) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("alter table Book add column author text not null default 'unknown'") } } private var instance: AppDatabase? = null @Synchronized fun getDatabase(context: Context): AppDatabase { instance?.let { return it } return Room.databaseBuilder(context.applicationContext, AppDatabase::class.java, "app_database") .build().apply { instance = this } } } } package com.example.testroom import android.text.Editable import androidx.room.Entity import androidx.room.PrimaryKey @Entity data class User(var firstName: String, var lastName: String, var age: Int ) { @PrimaryKey(autoGenerate = true) var id: Long = 0 } package com.example.testroom import androidx.room.* @Dao interface UserDao { @Insert fun insertUser(user: User): Long @Update fun updateUser(newUser: User) @Query("select * from User") fun loadAllUsers(): List<User> @Query("select * from User where age > :age") fun loadUsersOlderThan(age: Int): List<User> @Delete fun deleteUser(user: User) @Query("delete from User where lastName = :lastName") fun deleteUserByLastName(lastName: String): Int @Query("delete from User where age = :age") fun deleteByAge(age: Int) @Query("delete from User ") fun deleteAll() } package com.example.testroom import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import kotlinx.android.synthetic.main.activity_main.* import kotlin.concurrent.thread class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val userDao = AppDatabase.getDatabase(this).userDao() add.setOnClickListener { val user = User(tv_name.text.toString() ,tv_name.text.toString(),tv_age.text.toString().toInt()) thread { userDao.insertUser(user) } } clear.setOnClickListener { thread { userDao.deleteAll() } } get.setOnClickListener { thread { for (user in userDao.loadAllUsers()) { Log.d("ddd", user.toString()) } } } bt_deletebyage.setOnClickListener { thread { userDao.deleteByAge(tv_age.text.toString().toInt()) } } } }

 

最新回复(0)