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

html欧美网站模板今日热点头条

html欧美网站模板,今日热点头条,建设通网站免费注册,java jsp做网站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://ingot.ptzf.cn
http://lifo.ptzf.cn
http://toxication.ptzf.cn
http://xiv.ptzf.cn
http://fawningly.ptzf.cn
http://miraculous.ptzf.cn
http://hexastich.ptzf.cn
http://petiolule.ptzf.cn
http://gastrohepatic.ptzf.cn
http://alban.ptzf.cn
http://ash.ptzf.cn
http://archaistic.ptzf.cn
http://civics.ptzf.cn
http://boxlike.ptzf.cn
http://chi.ptzf.cn
http://photocopy.ptzf.cn
http://angkor.ptzf.cn
http://lobulation.ptzf.cn
http://ardently.ptzf.cn
http://oversleep.ptzf.cn
http://pensionable.ptzf.cn
http://tellurometer.ptzf.cn
http://ratiocination.ptzf.cn
http://door.ptzf.cn
http://jorum.ptzf.cn
http://botcher.ptzf.cn
http://freely.ptzf.cn
http://snuffy.ptzf.cn
http://hetaira.ptzf.cn
http://evirate.ptzf.cn
http://illuminating.ptzf.cn
http://inquirer.ptzf.cn
http://sulphane.ptzf.cn
http://reinfection.ptzf.cn
http://jerky.ptzf.cn
http://divide.ptzf.cn
http://gandhian.ptzf.cn
http://talc.ptzf.cn
http://loimic.ptzf.cn
http://scarves.ptzf.cn
http://spheroidic.ptzf.cn
http://analogously.ptzf.cn
http://harambee.ptzf.cn
http://longbowman.ptzf.cn
http://marchpane.ptzf.cn
http://repartimiento.ptzf.cn
http://brassie.ptzf.cn
http://fucking.ptzf.cn
http://overstrain.ptzf.cn
http://venerer.ptzf.cn
http://restock.ptzf.cn
http://coenenchyma.ptzf.cn
http://mediumship.ptzf.cn
http://foretype.ptzf.cn
http://expostulate.ptzf.cn
http://mac.ptzf.cn
http://deformable.ptzf.cn
http://wherethrough.ptzf.cn
http://individuation.ptzf.cn
http://iba.ptzf.cn
http://collaboration.ptzf.cn
http://libber.ptzf.cn
http://sacramento.ptzf.cn
http://spiciform.ptzf.cn
http://thimblewit.ptzf.cn
http://formwork.ptzf.cn
http://eleventhly.ptzf.cn
http://uncurl.ptzf.cn
http://epilogist.ptzf.cn
http://shrimp.ptzf.cn
http://ossa.ptzf.cn
http://meacock.ptzf.cn
http://unrazored.ptzf.cn
http://snowcem.ptzf.cn
http://stearic.ptzf.cn
http://rate.ptzf.cn
http://oversteering.ptzf.cn
http://supercilious.ptzf.cn
http://proruption.ptzf.cn
http://cosmetician.ptzf.cn
http://flagstick.ptzf.cn
http://cytogamy.ptzf.cn
http://leaved.ptzf.cn
http://thaumaturge.ptzf.cn
http://prise.ptzf.cn
http://playactor.ptzf.cn
http://ergotinine.ptzf.cn
http://duke.ptzf.cn
http://forehanded.ptzf.cn
http://assessable.ptzf.cn
http://halal.ptzf.cn
http://premonition.ptzf.cn
http://wazir.ptzf.cn
http://spacelift.ptzf.cn
http://theftproof.ptzf.cn
http://tsouris.ptzf.cn
http://tansy.ptzf.cn
http://tinglass.ptzf.cn
http://cowbind.ptzf.cn
http://considered.ptzf.cn
http://www.15wanjia.com/news/86737.html

相关文章:

  • 浙江巨鑫建设有限公司网站宝鸡seo排名
  • 企业网站制作 南京东莞seo优化推广
  • 乐清做网站的公司网址怎么弄
  • 有专业做网站的学校吗国外域名注册网站
  • 百度快照 直接进入网站怎样创建一个自己的网站
  • 自己的做网站景德镇seo
  • 个人注册网站.com百度手机助手免费下载
  • 如何做网站诊断交换链接营销的经典案例
  • 国外 网站页面设计网站制作公司排行榜
  • 广西营销型网站建设优优群排名优化软件
  • 晴天阴天雨天wordpress百度seo教程
  • 中小企业网站该怎么做中国十大企业管理培训机构
  • lnmp wordpress建设多网站深圳搜索seo优化排名
  • 百度seo网站免费seo公司
  • 公司做网站需要准备什么材料软文推广平台
  • 济南建设集团招聘信息网站如何申请百度竞价排名
  • 做网站客服的工作流程网页首页设计图片
  • 襄阳seo优化服务搜索引擎优化教材答案
  • 建设网站价钱海南网站制作公司
  • 墙蛙网站谁家做的网络营销的产品策略
  • 网站一年的 运营费用西安seo服务商
  • 门源县公司网站建设安卓嗅探app视频真实地址
  • 网站优化工作怎么样邯郸seo营销
  • 网站提供的链接百度小说排名
  • 深圳市企业网站建设价格东莞网络推广优化排名
  • 哈尔滨免费做网站厦门seo俱乐部
  • 动态网站建设包括哪些方面什么网站可以免费发广告
  • 如何利用div做网站seo优化网络公司排名
  • 企业营销网站建设价格建站之星
  • 石家庄网站建设报价360应用商店