当前位置:   article > 正文

【06】Kotlin项目实操之Room数据库_kotlin room查询数据

kotlin room查询数据

(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)好好活就是做有意义的事情.
(8)亡羊补牢,为时未晚
(9)科技领域,没有捷径与投机取巧。
(10)有实力,一年365天都是应聘的旺季,没实力,天天都是应聘的淡季。
(11)基础不牢,地动天摇
(12)写博客初心:成长自己,辅助他人。当某一天离开人世,希望博客中的思想还能帮人指引方向.
(13)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

【06】Kotlin项目实操之Room数据库

1.Room

(1)是SQlite数据库的抽象
(2)为了更加流畅的访问SQLite数据库

1.1如何做到流畅

(1)只需要使用注解即可以完成增删改查
(2)生成增删改查代码,它所生成的代码是在编译期完成的。
(3)生成的代码做了很多的优化
(4)使用了事务控制

2.案例

2.1数据表实体

/**
 * @author XiongJie
 * @version appVer
 * @Package com.gdc.kotlinproject.database
 * @file
 * @Description:
 * (1)@Entity注解在编译期生成代码
 * @date 2021-6-4 15:15
 * @since appVer
 */
@Entity
class Student() {
    /**
     * 主键唯一并自增
     */
    @PrimaryKey(autoGenerate = true)
    var id : Int = 0

    /**
     * 1.懒加载
     * 2.字段别名,如果不使用别名,默认使用属性名,加了别名,优先级更高,就使用别名的名称
     * name="Student_name"
     */
    @ColumnInfo(name = "name")
    lateinit var name:String

    @ColumnInfo(name = "age")
    var age:Int = 0

    /**
     * 1.次构造调用主构造
     * :this()
     */
    constructor(name:String,age:Int):this(){
        this.name = name
        this.age = age
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

2.2数据库访问对象

/**
 * @author XiongJie
 * @version appVer
 * @Package com.gdc.kotlinproject.database
 * @file
 * @Description:
 * (1)@Dao标记数据库的访问对象,即数据库的增删改查
 * @date 2021-6-4 15:24
 * @since appVer
 */

@Dao
interface StudentDao {

    /**
     * 1.可变参数使用
     * vararg students:Student
     */
    @Insert
    fun insertStudents(vararg students:Student)

    @Update
    fun updateStudents(vararg students: Student)

    //1.删除全部
    @Query("DELETE FROM student")
    fun deleteAllStudents()

    //1.查询全部
    @Query("SELECT * FROM student ORDER BY ID DESC")
    fun queryAllStudents() : List<Student>

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

2.3数据库创建与获取

/**
 * 1.数据表与实体指定
 * java数组: entities = {}
 * kt数组:entities = []
 *
 * 2.数据库版本号设置
 * version数据库版本号
 *
 * 3.返回数据库操作Dao
 * Dao是对数据库的增删改查
 *
 * 4.创建数据库与获取数据库
 *
 * 5.需要成为RoomDatabase的子类
 *
 */
@Database(entities = [Student::class],version = 1)
abstract class StudentDatabase : RoomDatabase(){

    abstract fun getStudentDao() : StudentDao

    //派生(单例模式)
    companion object{
        //1.允许为空
        private var INSTANCE : StudentDatabase ? = null

        /**
         * 2.创建数据库获取数据库
         * (1)给Application使用
         */
        fun getDatabase(context : Context) : StudentDatabase ? {
            if(null == INSTANCE){
                /**
                 * 2.1::class.java是因为room底层是由java产现的,因此需要.java
                 * 如果底层是由kotlin语言编写的,就不需要这么麻烦
                 *
                 * 2.2允许在主线程中运行
                 * allowMainThreadQueries()
                 */
                INSTANCE = Room.databaseBuilder(context,StudentDatabase::class.java,"student_database.db")
                    .allowMainThreadQueries()
                    .build()

            }
            return INSTANCE
        }

        /**
         * 获取数据库
         */
        fun getDataBase() : StudentDatabase? = INSTANCE
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

3.打赏鼓励

感谢您的细心阅读,您的鼓励是我写作的不竭动力!!!

3.1微信打赏

在这里插入图片描述

3.2支付宝打赏

在这里插入图片描述

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号