安卓学习之《第一行代码3》笔记(2)KotLin简单实现Room数据库

安卓学习之《第一行代码3》笔记(2)KotLin简单实现Room数据库,第1张

创建数据库,实现对数据库的怎删改查。

在安卓开发过程中,我们经常会与数据打交道,通常都是将数据保存在缓存中,比如简单使用静态的方法,再比如使用getSharedPreferences()。这些方法虽然好用,但是对于数据 *** 纵是不友好的,没有存入数据库中效率高。在这里将使用Room数据库来实现,room数据库的优点是可以避免与SQL打交道了!

一、知识点

最近也是刚刚接触kotlin,在是实现Room数据库的时候,有涉及到thread,因为数据库 *** 作为耗时 *** 作,所以需要在子线程中。

第二个小知识,在kotlin中对于UserBean,是数据类,所以类名前面写为data,这样可以省略toString()等方法

(一)、实现思路

1.首先导入依赖

在app/build.gradle中导入 plugins { id 'kotlin-kapt'}

在defaultConfig{}中加入

javaCompileOptions {
    annotationProcessorOptions {
        arguments = [
                "room.schemaLocation"  : "$projectDir/schemas".toString(),
                "room.incremental"     : "true",
                "room.expandProjection": "true"]
    }
}
在依赖中导入
//room
implementation 'androidx.room:room-runtime:2.2.3'
annotationProcessor 'androidx.room:room-compiler:2.2.3'
kapt 'androidx.room:room-compiler:2.2.3'
androidTestImplementation 'androidx.room:room-testing:2.2.3'

2.创建UserBean,设置主要的属性name,age,id设为自增长

3.创建UserBeanDao接口,设置增删改查的方法

4.创建AppDataBase,创建数据库

5.实现main_activity.xml文件,添加按钮

6.实现insert插入user表中,update更新user表,delete删除user表的某一行,query查询user表。

二、demo

(一).效果图

 

(二).主要代码

1.UserBean中

@Entity(tableName = "Table_User")
data class UserBean (var name: String ,var age: Int){
    @PrimaryKey(autoGenerate = true)
    var id: Long = 0

}

2.UserBeanDao中

@Dao
interface UserBeanDao {

    @Insert
     fun insert(user: UserBean): Long

    @Update
     fun update(user: UserBean)

    @Delete
     fun delete(user: UserBean)

    @Query("select * from Table_User")
     fun getAllUser(): MutableList

    @Query("select * from Table_User where age > :age ")
    fun getUser(age: Int): UserBean?

    @Query("delete from Table_User where name = :name1 ")
    fun deleteByTom(name1: String): Int
}

3.activity_main.xml布局文件



    
    

4.MainActivity

val userDao=AppDataBase.getInstance(this).getUserBean()

val user1=UserBean("zhangsan",14)
val user2=UserBean("lisi",10)
val user3=UserBean("Tom",26)
val user4=UserBean("Rose",20)
add.setOnClickListener {
    thread {
        user1.id=userDao.insert(user1)
        user2.id=userDao.insert(user2)
        user3.id=userDao.insert(user3)
        user4.id=userDao.insert(user4)
    }
}
up.setOnClickListener {
    thread {
        user2.age=40
        userDao.update(user2)
    }
}
delete.setOnClickListener {
    thread {
        userDao.delete(user1)
        userDao.deleteByTom("Tom")
    }
}
query.setOnClickListener {
    thread {
        for (user in userDao.getAllUser()){
            Log.d("Main",user.toString())
        }
    }
}

三、总结

本文是我第一次参考实现,一个简单的Room数据库。由于篇幅有限,对于room数据库的升级,修改表的内容没有实现。有需要的可以参考第一行代码。

声明,本文参考自《第一行代码》第三版,目前正在积极学习安卓知识,如有错误,敬请指正!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/992977.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存