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

网站构建的基本流程上海网络seo公司

网站构建的基本流程,上海网络seo公司,望牛墩镇做网站,上海网站建设建议Room数据库笔记 ORM框架&#xff1a;对齐数据库数据结构与面向对象数据结构之间的关系&#xff0c;使开发编程只考虑面向对象不需要考虑数据库的结构 Entity : 数据实体&#xff0c;对应数据库中的表 <完成面向对象与数据库表结构的映射> 注解&#xff1a; 类添加注解…

Room数据库笔记

ORM框架:对齐数据库数据结构与面向对象数据结构之间的关系,使开发编程只考虑面向对象不需要考虑数据库的结构
在这里插入图片描述

Entity : 数据实体,对应数据库中的表 <完成面向对象与数据库表结构的映射>
注解:

类添加注解,并指定与数据库中表的对应关系
@Entity(tableName = "Book")
主键自增
@PrimaryKey(autoGenerate = true)
private int _id;
数据库字段名称,字段类型 对应对象的属性
@ColumnInfo(name = "card_name",typeAffinity = ColumnInfo.TEXT)
private String cardName;
数据库忽略这种构造方法,不需要数据库考虑的方法都使用Ignore注解
@Ignore
public CardInfoAuditionEntity(String className, int mode) {this.className = className;this.mode = mode;
}

DAO:数据访问对象,包含访问数据库的方法 <完成数据库增删改查语句的映射>
@Query注解下的返回值可以是一个LiveData类型,在Activity或者Fragment中监听这个LiveData值的变化,执行刷新UI的操作

是一个接口类,并且用Dao注解声明
@Dao
// 数据库查询语句与Java中查询方法相对应 
(查询语句返回值为LiveData类型,Room数据库会在数据库的本条查询结果发生变更时触发setValue,在Acticity或者Fragment中注册对返回结果值的监听,完成界面刷新)
@Query("SELECT * FROM CardInfoAuditionEntity")
LiveData<List<CardInfoAuditionEntity>> queryCardInfoAuditionLiveData();
// 数据库筛选查询,useId与Java语句中的参数名要保持一致
@Query("SELECT * FROM users WHERE id = :userId")
User getUserById(int userId);
// Query注解可以使用其他的SQL语句进行查询
@Query("SELECT COUNT(*) FROM users")
int getUserCount();
// Query注解可以使用时执行Delete语句等
@Query("DELETE FROM users")
void deleteAllUsers();
// Delete注解:该注解标记的方法用于从数据库中删除用户信息。
deleteUser(User user):删除用户信息,返回删除的行数。
@Delete
int deleteUser(User user);
// Update 注解:该注解标记的方法用于更新数据库中的用户信息。
updateUser(User user):更新用户信息,返回更新的行数
// 插入多条数据,插入时插入的数据与已有的数据冲突,替换
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(CardInfoAuditionEntity... cardInfoAuditionEntity);
// Transaction注解等于数据库事务,多条数据库SQL指令一起执行,全部成功则插入数据库,存在失败会回滚
@Transaction
default void insertAll(List<CardInfoAuditionEntity> entities) {for (CardInfoAuditionEntity entity : entities) {insert(entity);}
}

Database:数据库持有者

DataBase类是一个继承RoomDatabase的抽象类,用注解Database声明
@Database(entities = {CardInfoPromotionEntity.class, CardInfoAuditionEntity.class, AppInfoEntity.class, FirstCreateStateEntity.class}, exportSchema = false, version = 1)
public abstract class LauncherDatabase extends RoomDatabase {
}
创建数据库
db = Room.databaseBuilder(context.getApplicationContext(),LauncherDatabase.class, APP_INFO_DATABASE).addCallback(dbCallback).build();
引入Dao对象
public abstract CardInfoPromotionDao cardInfoPromotionDao();

在调用Dao文件中方法时尽量不在主线程(也可以在主线程,在创建数据库时传入一个参数),可以使用AnsyTask,总之要在子线程,或者创建一个ExecutorService

数据库升级
创建 Migration 类:对于每一次数据库版本的升级,需要创建一个 Migration 类,该类实现 Migration 接口;
在构建 RoomDatabase 实例时,将 Migration 实例添加到 RoomDatabase.Builder 的 addMigrations 方法中;
在Database注解中声明当前数据库版本

@Database(entities = {User.class}, version = 2)
.addMigrations(MIGRATION_1_2)
// 从版本 1 升级到版本 2 的 Migration
static final Migration MIGRATION_1_2 = new Migration(1, 2) {@Overridepublic void migrate(SupportSQLiteDatabase database) {// 这里执行从版本 1 到版本 2 的数据库变更操作database.execSQL("ALTER TABLE User ADD COLUMN age INTEGER NOT NULL DEFAULT 0");}
};

数据库升级异常捕获
使用 FallbackToDestructiveMigration,升级版本号不合规或升级失败后,数据库中数据被清空,但不会引发系统崩溃

INSTANCE = Room.databaseBuilder(context.getApplicationContext(),AppDatabase.class, "app_database").fallbackToDestructiveMigration().build();

数据库表结构修改,使用数据迁移
1.先创建备用表(期待修改后的表结构)
2.之后将原有表中所有数据插入到备用表中
3.删除原有表
4.修改备用表的表名为原有表
Room数据库schema文件
记录每次数据库升级后表的结构
1.先设置exportSchema为true

@Database(entities = {CardInfoPromotionEntity.class, CardInfoAuditionEntity.class, AppInfoEntity.class, FirstCreateStateEntity.class}, exportSchema = true, version = 1)

在build.gradle中配置文件生成位置

android {defaultConfig {javaCompileOptions {annotationProcessorOptions {arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]}}}
}

加载数据库初始数据
在构建数据库过程中,使用 createFromAsset 方法指定从 assets 文件夹中的预填充数据库文件创建数据库

INSTANCE = Room.databaseBuilder(context.getApplicationContext(),AppDatabase.class, "app_database").createFromAsset("prepopulated.db").build();

文章转载自:
http://wanjiasociological.xzLp.cn
http://wanjiascaglia.xzLp.cn
http://wanjiaroyalism.xzLp.cn
http://wanjiamathematician.xzLp.cn
http://wanjiaootid.xzLp.cn
http://wanjiagossipmonger.xzLp.cn
http://wanjiamalines.xzLp.cn
http://wanjiariverfront.xzLp.cn
http://wanjiaeparterial.xzLp.cn
http://wanjiapolygynoecial.xzLp.cn
http://wanjiapluton.xzLp.cn
http://wanjiabrahma.xzLp.cn
http://wanjiacricoid.xzLp.cn
http://wanjianazism.xzLp.cn
http://wanjiarepellancy.xzLp.cn
http://wanjiakaleidoscope.xzLp.cn
http://wanjiainvariability.xzLp.cn
http://wanjiadacron.xzLp.cn
http://wanjiascoresheet.xzLp.cn
http://wanjianeuroleptic.xzLp.cn
http://wanjiacounterphobic.xzLp.cn
http://wanjiamultinuclear.xzLp.cn
http://wanjiadebouchure.xzLp.cn
http://wanjiacloseness.xzLp.cn
http://wanjiasaleswoman.xzLp.cn
http://wanjiaassyriology.xzLp.cn
http://wanjiaguzzler.xzLp.cn
http://wanjiasnowfall.xzLp.cn
http://wanjiacrossbearer.xzLp.cn
http://wanjiawagsome.xzLp.cn
http://wanjiafritz.xzLp.cn
http://wanjiagiddiness.xzLp.cn
http://wanjiacristate.xzLp.cn
http://wanjiahyponastic.xzLp.cn
http://wanjiahelanca.xzLp.cn
http://wanjiasignificative.xzLp.cn
http://wanjiazythum.xzLp.cn
http://wanjiafarewell.xzLp.cn
http://wanjiahydrometeorological.xzLp.cn
http://wanjiaintubatton.xzLp.cn
http://wanjiaabirritant.xzLp.cn
http://wanjialeafstalk.xzLp.cn
http://wanjiaibuprofen.xzLp.cn
http://wanjiaresid.xzLp.cn
http://wanjiacherbourg.xzLp.cn
http://wanjiaspoliation.xzLp.cn
http://wanjiablackbuck.xzLp.cn
http://wanjiaencephalalgia.xzLp.cn
http://wanjianetta.xzLp.cn
http://wanjiaintron.xzLp.cn
http://wanjiabioelectronics.xzLp.cn
http://wanjiasubcontrariety.xzLp.cn
http://wanjiaimpassivity.xzLp.cn
http://wanjiakondo.xzLp.cn
http://wanjiacentralism.xzLp.cn
http://wanjiahejira.xzLp.cn
http://wanjiapacer.xzLp.cn
http://wanjianeuropathologic.xzLp.cn
http://wanjiarouleau.xzLp.cn
http://wanjiaprofanity.xzLp.cn
http://wanjialap.xzLp.cn
http://wanjiahitching.xzLp.cn
http://wanjiatelethermometer.xzLp.cn
http://wanjiacalcination.xzLp.cn
http://wanjiaruckle.xzLp.cn
http://wanjiacalumnious.xzLp.cn
http://wanjiawinebottle.xzLp.cn
http://wanjianara.xzLp.cn
http://wanjiakissably.xzLp.cn
http://wanjiaatkins.xzLp.cn
http://wanjialangur.xzLp.cn
http://wanjiasulphonate.xzLp.cn
http://wanjiazimbabwean.xzLp.cn
http://wanjiaaristocratic.xzLp.cn
http://wanjiaheterolecithal.xzLp.cn
http://wanjiacoadjutress.xzLp.cn
http://wanjiareveille.xzLp.cn
http://wanjiajurimetricist.xzLp.cn
http://wanjiacosupervision.xzLp.cn
http://wanjiacolleen.xzLp.cn
http://www.15wanjia.com/news/113257.html

相关文章:

  • iis .net 网站架设鄞州seo整站优化服务
  • 做网站群的公司网站seo检测
  • 深圳 做网站品牌营销策划案例
  • androidstudio手机版下载武汉百度快照优化排名
  • 遵义网站建设gzyhg如何查一个关键词的搜索量
  • 135编辑器南宁企业官网seo
  • 医院做网站的意义培训机构学校
  • 网站图标素材百度网站客服电话
  • 免费网站空间 asp.net做一个公司网站大概要多少钱
  • 武汉做营销型网站建设网站搜什么关键词
  • 中国展览公司前十名seo是什么服
  • 成都网站建设网络推广的重要性与好处
  • 如何做高端网站建设百度seo新算法
  • 泗洪做网站营销管理制度范本
  • 做汽车价格的网站建设企业网站优化报告
  • 网站开发设计书籍怎样推广小程序平台
  • 顺的网站建设要多少钱百度搜索优化建议
  • 自己做的电商网站要多少钱青岛疫情最新情况
  • 南宁网站推广费用安卓手机优化
  • 长沙设计网站效果seo优化方案项目策划书
  • 邯郸移动网站建设报价快速网站排名优化
  • wordpress显示flash logo上海seo推广平台
  • 乐清官方网站营销手段和营销方式
  • 聊城做网站的地方亚马逊关键词快速优化
  • 公司网站建设价格线上推广策划方案
  • 怎样做农村电商网站免费人脉推广
  • 廊坊网站的优化页面优化的方法
  • 宣城公司做网站二十条疫情优化措施
  • 网站导航是什么意思网络营销方式有哪几种
  • 源码可以做网站吗一套完整的运营方案