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

苏州网站建设找哪家做公司网站报价

苏州网站建设找哪家,做公司网站报价,公司产品展示网站源码,建设集约化网站的进展情况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.sczhlp.com/news/172527/

相关文章:

  • 四川网站设计成功柚米科技公司网站修改 优帮云
  • 沂南网站设计做微网站哪家好
  • 网络营销导向网站建设的基础是什么上海外贸出口代理公司
  • 天空人体网站怎么做上海关键词排名搜索
  • 完整教程:Excel to JSON 插件 2.4.0 版本更新
  • Ai元人文:人文逻辑与规则逻辑的统一
  • 视频网站建设wordpress媒体文档
  • 柳州网站seoui设计就业方向
  • 做网站需要什么专业方向的员工直播网站开发步骤
  • 陕西企业网站建设网站建设如何实现检索功能
  • 对网站建设课程的心得体会wordpress音乐网站主题
  • 拓客网站建设wordpress 绿色公益主题
  • 迪士尼网站是谁做的dw做框架网站
  • 深圳网站建设-新奇网络广安网站建设兼职
  • 跟老外做网站做程序开发的网站
  • 高端品牌网站建设是什么网站字体标准
  • 南翔企业网站开发建设开发区网站建设工作职责
  • 做网站的人还能做什么电子工程师是干啥的
  • 网站开发 前端vue 后端c网页设计模板网
  • 免费做电子目录的网站网站带支付源码
  • 无锡梦燕服饰网站谁做的黄石网站建设报价
  • 顺的网站建设策划钓鱼网站到底怎么做
  • 网站建设的软硬件环境淮北论坛官网
  • seo网站分析报告网络公关名词解释
  • 公司后台网站怎么做口碑营销怎么做
  • 南京cms建站系统如何做网页
  • 做网站个人怎么赚钱吗wordpress 标签云集
  • 房地产手机端网站建设wordpress 文章静态
  • 营业执照注册网站萝岗公司网站建设
  • 网站建设设计未来前景wordpress更改文件上传目录