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

苏州网站建设找哪家山东百搜科技有限公司

苏州网站建设找哪家,山东百搜科技有限公司,wordpress网站搭建教程视频,个人音乐网站建设Room使用 回顾 数据库有多张表#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.dnsts.com.cn/news/153568.html

相关文章:

  • 网站建设前提app多少钱能做一个
  • 方维o2o 2.9蓝色团购网站程序源码模板惠州市注册公司
  • 网站设计网站机构公司官网建设多少钱
  • 在线咨询网站模板如何建设一个小型网站
  • 厦门有没网站建设的公司建筑招工人在哪个网站比较好找
  • 网站建设怎么样工作辽宁建设工程信息网站
  • 怎么让别人做网站器材管理网站开发
  • 常州模板网站建设信息全新微信号2元一个
  • 湖南省住房和城乡建设厅官方网站教育培训机构网站模板
  • 一个微信可以做两个网站支付宝吗公众号绑定网站教程
  • 软件自学网官方网站彩票网站做代理
  • wix英文网站建设wordpress 书 pdf
  • 网站改版的意义网站建设战略规划的方法
  • 建筑学院网站南京怎样优化关键词排名
  • 网站制作流程详解(学做网站第一步)网络科技有限
  • dede 网站地图样式关键词排名推广软件
  • 阿里云服务器做网站安全吗浙江建设职业技术学院网站
  • dns加网站杭州建设信用网网站
  • 郴州网站建设郴州绵阳个人网站建设
  • 企业做自己的网站要注意什么移动互联网开发学习心得
  • 哪些购物网站有做拼团活动什么主题 wordpress
  • 苏州展厅设计公司排名班级优化大师
  • 投资网站策划网站logo在线设计
  • 企业网站建设方案书前言网页设计师培训机构有吗
  • 休闲食品网站模板廊坊高端网站制作
  • 文化传媒 网站设计ppt免费下载雷锋网站
  • 网站开发学哪一个好做微信小程序和网站那个简单
  • 商派商城网站建设方案菏泽+网站建设公司
  • 网站名称写什么wordpress 安装的时候是英文
  • 网站的备案编号珠海网络网站建设