06Kotlin项目实操之Room数据库
Posted 清风百草
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了06Kotlin项目实操之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
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>
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
3.打赏鼓励
感谢您的细心阅读,您的鼓励是我写作的不竭动力!!!
3.1微信打赏
3.2支付宝打赏
以上是关于06Kotlin项目实操之Room数据库的主要内容,如果未能解决你的问题,请参考以下文章