当前位置: 首页 > news >正文

建网站资料北京seo计费

建网站资料,北京seo计费,商丘广告推广,wordpress搭建ssRoom使用 回顾 数据库有多张表#xff0c;一张表只能记录一种Class#xff0c;Class的具体属性是这个表的列#xff1b;所有对表的操作都要通过Dao来访问 注解说明#xff1a; Enity 作用于Class上#xff0c;表示创建一张表记录该Class#xff0c;Class内部属性使用…Room使用 回顾 数据库有多张表一张表只能记录一种ClassClass的具体属性是这个表的列所有对表的操作都要通过Dao来访问 注解说明 Enity 作用于Class上表示创建一张表记录该ClassClass内部属性使用ColumnInfo声明该列名字和Type Dao 作用于Interface该interface主要是提供访问表进行增删改查的接口。使用对应增删改查注解标识方法 Database 声明数据库(需为abstract)该注解属性entities需声明该数据库中的所有表version表示该数据库的版本,数据库中声明返回Dao实例的方法 使用流程 通过Room的静态方法databaseBuilder传入context数据库的class对象数据库的名称(db结尾)调用build函数就创建了数据库 数据类 Entity(tableName student) data class StudentBean(PrimaryKey(autoGenerate true) var id: Int 0,ColumnInfo(name name, typeAffinity ColumnInfo.TEXT) var name: String,ColumnInfo(name age, typeAffinity ColumnInfo.TEXT) var age: String,ColumnInfo(name sex, typeAffinity ColumnInfo.TEXT) var sex: String )Dao Dao interface StudentDao {Insertfun insertStudent(student: StudentBean)Deletefun deleteStudent(student: StudentBean)Updatefun updateStudent(student: StudentBean)Query(select * from student)fun getStudentList():ListStudentBeanQuery(select * from student where id:id)fun getStudentById(id:Int):ListStudentBean }//声明 Database(entities [StudentBean::class],version 2) abstract class MyDataBase : RoomDatabase() {companion object{private const val DATABASE_NAMEmy_dbprivate var instance:MyDataBase?nullfun getInstance(context:Context):MyDataBase{instance?.let {return it}//创建Room数据库需要三个参数1.上下文context2.数据库Class 3.数据库名字db结尾//会通过反射创建数据库ClassImpl的实例 数据库Class名字和数据库名称//build方法会反射创建M有MyDataBaseImpl类并调用该类的init方法return Room.databaseBuilder(context.applicationContext,MyDataBase::class.java,DATABASE_NAME).addCallback(object : Callback() {override fun onCreate(db: SupportSQLiteDatabase) {super.onCreate(db)Log.i(wwwwwwwwwwwwwww, RoomDataBaseonCreate: )}override fun onOpen(db: SupportSQLiteDatabase) {super.onOpen(db)Log.i(wwwwwwwwwwwwwww, RoomDataBaseoonOpen )}override fun onDestructiveMigration(db: SupportSQLiteDatabase) {super.onDestructiveMigration(db)Log.i(wwwwwwwwwwwwwww, 数据库被破坏 )}}).addMigrations(object : Migration(1,2) {override fun migrate(database: SupportSQLiteDatabase) {database.execSQL(ALTER TABLE student ADD COLUMN sex TEXT NOT NULL DEFAULT 女)}}).build()}}abstract fun getStudentDao():StudentDao 借助build的返回值访问Dao进行增删改查操作 2.降序升序在databaseBuilder函数后添加迁移策略addMigrations构造函数的两个版本对应迁移的版本migrate函数是匹配对应策略后进行的操作 大致原理 疑问Dao中只是定义了访问数据库的接口数据库也只是个抽象类返回Dao实例的接口还没有实现 在编译期间借助KAPT插件生成Database标记的实现类类名只是添加了一个后缀_Impl而Dao也会生成对应的_Impl后缀的实现类 查看Dao的实现类发现其每一个crud都是一个事物并且在uiThread操作会crash如果需要多个操作按顺序进行而不是单个事务一样需要添加Transition标记方法内部curd将按顺序执行 这两个生成的类可以在该目录下找到build/generated/source/kapt/debug/com/example/myapplication/room 1、databaseBuilder会创建RoomDatabase的Builder对象保存传入的参数(比如数据库的class,数据库名称版本迁移策略数据库打开关闭回调)初始化一些的配置参数 build中会反射创建出数据库class_Impl的实例然后返回。 2.获取dao之后进行curd在crud内部首先看有没有挂起的事务如果Thread 1提交的事务还没有结束Thread2提交后会报crash(ThreadLocal保证) 3.接着打开数据库也就是在进行crud的时候才会打开数据库。其中会判断是否进行迁移 4.cud的每个操作验证完23后就会开启一个事务.beginTransaction()接着设置事务的成功或Fail。最后结束事务 原文链接Jetpack Room使用 - 掘金 (juejin.cn)
http://www.w-s-a.com/news/723402/

相关文章:

  • ds216j做网站做购物网站那个好
  • 做淘宝门头的网站阿里巴巴官网app
  • 安踏网站建设策划方案如何通过域名访问网站
  • 建设网站破解版seo查询 站长之家
  • 太原模板建站平台旅游企业网站建设工作的通知
  • 网站国外建设超级简历模板官网
  • 上海网站建设市场医药网站怎么做
  • 宁夏成城建设集团网站网店美工课本
  • 哪些网站的简历做的比较好政务服务 网站 建设方案
  • 如何建设个人网站凡科怎么样vps安装wordpress后怎样登录
  • 学seo朝阳区seo
  • 网站开发团队成员皮具网站建设
  • 国外外贸需求网站响应式布局网页
  • 手机端便民服务平台网站建设昆明网络哪家好
  • 产品网站建设找哪家舟山信息港
  • 唐山网站建设汉狮怎么样seol英文啥意思
  • 深圳小程序网站开发公司网页制作模板视频教程
  • 电子商务网站开发开题报告wordpress更改后台地址
  • 网站静态前端是什么工作
  • 餐饮门户网站 方案怎么做创业好项目
  • 做百度手机网站推广普通话的宣传标语
  • 记事本可以做网站吗网站服务器是主机吗
  • 手机网站被拦截怎么办怎么解决东营建设信息网网
  • 外贸网站模板免费微信网站开发技术
  • 视频盗版网站怎么做福州网站seo
  • 成都金铭 网站建设做网站包含的技术
  • 长沙的网站建设公司哪家好做网站应选那个主题
  • 公司网站百度搜不到如何自己做一个网站
  • 学生如何建设网站网站开发程序
  • 网站建设公司哪家好 皆来磐石网络网站建设"淘宝网" 在颜色选取和搭配方面有哪些值得学习的地方.