room数据库使用以及增加表的使用
依赖
"androidx.room:room-runtime:2.2.6" "androidx.room:room-compiler:2.2.6"
1.实体类
实体类需要保存到数据库的新类用@Entity注解表示
tableName是数据库中表的名字,my_advert可以根据自己需要自定义
@PrimaryKey,@NonNull主键不能为空
@Entity(tableName = "my_advert") public class MyAdvertBean { /** * 素材id, */ @PrimaryKey @NonNull private String moduleId; /** * 广告日期,一天一重置 */ private String date; /** * 存储广告的 */ private String message; @NonNull public String getModuleId() { return moduleId; } public void setModuleId(@NonNull String moduleId) { this.moduleId = moduleId; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
2.定义数据库增删改查
关键注解:@Insert增,@Delete删,@Update改,@Query查
@Dao
public interface MyAdvertDao {/*** 根据id查询保存的广告* @param moduleId 模块id* @return*/@Query("select * from my_advert where moduleId = :moduleId LIMIT 1")MyAdvertBean queryMyAdvert(String moduleId);/*** 删除本地广告* @param myAdvertBean 广告*/@Deletevoid deleteAdvert(MyAdvertBean myAdvertBean);/*** 广告保存本地* @param myAdvertBean 广告*/@Insert(onConflict = OnConflictStrategy.REPLACE)void insertAdvert(MyAdvertBean myAdvertBean);/*** 更新本地广告信息* @param myAdvertBean 广告*/@Updatevoid updateAdvert(MyAdvertBean myAdvertBean);
}
3.数据库升级等操作Base,继承RoomDataBase
@Database注解用来标注数据库中有哪几张表,自己新加的MyAdvertBean加入里面 ,然后version增加版本1,从5到6
@TypeConverters是用来list数据存储
数据库版本原来是5,我需要插入新的表,执行MIGRATION_5_6,版本需要加1
@Database(entities = {UserEntity.class, BrowseRecordEntity.class, MyAdvertBean.class}, version = 6)
@TypeConverters({BaseObjDataConvert.class})
public abstract class UserDatabase extends BaseDatabase {public abstract UserDao getUserDao();public abstract BrowseRecordDao getRecordDao();public abstract MyAdvertDao getMyAdvertDao();private static UserDatabase instance;public static UserDatabase getInstance() {if (instance == null) {synchronized (UserDatabase.class) {if (instance == null) {instance = Room.databaseBuilder(Utils.getApp(), UserDatabase.class, "shandian").addMigrations(MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5,MIGRATION_5_6).allowMainThreadQueries().build();}}}return instance;}static final Migration MIGRATION_2_3 = new Migration(2, 3) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {database.execSQL("alter table user add column sex TEXT");database.execSQL("alter table user add column birthday TEXT");database.execSQL("alter table user add column signature TEXT");database.execSQL("alter table user add column totalScore Text");database.execSQL("alter table user add column score Text");}};static final Migration MIGRATION_3_4 = new Migration(3, 4) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {database.execSQL("CREATE TABLE IF NOT EXISTS browse_record (type TEXT, articleId TEXT PRIMARY KEY NOT NULL,opentype TEXT," +"param TEXT,title TEXT,publish_at_time INTEGER NOT NULL DEFAULT 0)");}};static final Migration MIGRATION_4_5 = new Migration(4, 5) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {database.execSQL("alter table browse_record add column browse_time INTEGER NOT NULL DEFAULT 0");}};/*** 广告数据库表*/static final Migration MIGRATION_5_6 = new Migration(5, 6) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {database.execSQL("CREATE TABLE IF NOT EXISTS my_advert (date TEXT, moduleId TEXT PRIMARY KEY NOT NULL,message TEXT)");}};}
public class BaseObjDataConvert{@TypeConverterpublic NavconfigBean revert(String data) {try {return GsonUtils.fromJson(data, NavconfigBean.class);} catch (Exception e) {e.printStackTrace();}return null;}@TypeConverterpublic String convert(NavconfigBean data) {return GsonUtils.toJson(data);}
}相关文章:
room数据库使用以及增加表的使用
依赖 "androidx.room:room-runtime:2.2.6" "androidx.room:room-compiler:2.2.6" 1.实体类 实体类需要保存到数据库的新类用Entity注解表示 tableName是数据库中表的名字,my_advert可以根据自己需要自定义 PrimaryKey,NonNull主键…...
WiFi-交互过程分析
目录 1.802.11 标准简介 2.802.11 协议格式 2.1管理帧协议格式 2.1.1(Beacon (信标) 帧) 2.1.2(Probe Request (探测请求) 帧) 2.1.3(Probe Response (探测响应) 帧) 2.1.4(ATIM 帧) 2.1.5(Disassociation (解除关联) 与 Deauthentication (解除认证) 帧) 2.1.6(Assoc…...
基于ZYNQ+linux+xenomai 的多轴运动控制平台关键技术研发-测试系统搭建(四)
本章搭建实验测试平台,对多轴运动控制平台的硬件功能和系统任务通信功能 进行测试。通过测试结果,进行平台硬件设计正确性验证和系统实时处理与同步控制 的功能与性能验证。 5.1 测试平台搭建 多轴运动控制系统的测试平台搭建如图 5.1 所示。测试平台由安…...
初识操作系统
目录 1.操作系统是什么 2.为什么要有操作系统 3.操作系统的相关关系 1.驱动程序 2.系统调用接口 3.用户调用接口 4.用户程序 4.用具体的例子理解操作系统 1.操作系统是什么 (1)操作系统是一组管理计算机硬件与软件资源的计算机软件程序 。 (…...
#详细介绍!!!线程池
本篇详细: 1.介绍了什么是线程池 2.使用线程池有什么好处 3.线程池的工作流程 4.线程池的各个参数介绍 5.如何编写Java代码来创建线程池 6.使用线程池的注意事项 目录 一:什么是线程池 二:为什么使用线程池来管理线程 三:线程池…...
【嵌入式Linux学习笔记】基于Linux官方库的标准外设驱动
对于标准的外设如LED,KEY,PWM等,以及标准通信协议,Linux都自带有标准的驱动库,不需要我们自行编写,只需要配置好相应的GPIO属性和电气属性,即可匹配相应的驱动,在应用程序中直接使用…...
网络爬虫抓包工具
📚介绍:Charles是著名的抓包工具🐂,可以抓取移动端与pc端网络访问🕷的所有数据。我们将使用它抓取我们与小程序交互的所有信息。🎇我们可以百度搜索Charles官网下载适用于自己系统的Charles安装包…...
蓝桥杯倒计时 | 倒计时17天
作者🕵️♂️:让机器理解语言か 专栏🎇:蓝桥杯倒计时冲刺 描述🎨:蓝桥杯冲刺阶段,一定要沉住气,一步一个脚印,胜利就在前方! 寄语💓:…...
【Spring Cloud Alibaba】7.Sentinel熔断器仪表盘监控
文章目录简介什么是 Sentinel控制台获取源码方式下载jar包方式启动访问服务配置项目,启用Sentinel完整配置测试简介 接下来我们通过Sentinel控制台来实现对服务消费者提供的熔断机制进行监控和控制,本操作先要完成之前的步骤,详情请参照【Sp…...
个人博客系统项目测试报告
项目背景介绍 背景:当在学习一项技能的时候,我们总会习惯通过博客来记录所学的知识点,方便后期遗忘时随时查看和快速复习。本次开发的Web网站程序便是为了更加轻量和方便地记录自己的学习笔记 概述:一个Web网站程序,…...
flutter安装自用笔记
参照文章: 开发环境搭建 Flutter环境配置步骤: 1.系统配置要求 2.Java环境 3.Flutter SDK 4.Android 开发环境一、系统配置要求 操作系统:Windows 7 SP1 或更高的版本(基于 x86-64 的 64 位操作系统) 磁盘空间&…...
tomcat线程池以及在SpringBoot中的启动过程
tomcat两大组件:连接器Connector,容器Container tomcat线程池 Tomcat线程池扩展了ThreadPoolExecutor,行为稍有不同 重写了ThreadPoolExecutor的execute方法 如果总线程数达到maximumPoolSize,不会立刻抛RejectedExecutionExcept…...
第十四届中国大学生创新创业大赛
文章目录比赛官网比赛题目含金量非常高建议参加的学生推荐几个我感兴趣的题目联系比赛官网 官网地址:http://www.fwwb.org.cn/ 实际叫做:中国大学生创新创业大赛 比赛题目 题目公布查看地址:http://www.fwwb.org.cn/topic/index 题目有…...
LeetCode:322. 零钱兑换——动态规划从案例入门
🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀算法专栏: 👉🏻123 一、🌱322. 零钱兑换 题目描述:给你一个整数数组coins,…...
【lwIP(第四章)】网络接口
目录一、lwIP网络接口简介二、lwIP的netif结构三、lwIP的netif相关函数1. lwIP网络接口的全局变量2. netif_add()函数3. netif_remove()函数4. netif_set_default()函数一、lwIP网络接口简介 lwIP协议栈支持多种不同的网络接口(网卡),由于网卡…...
Vue3 pinia入门篇(一)
系列文章目录 主要为了记录如何使用Pinia在Vue3中的使用方式(下面会介绍为什么使用Vue3选型) 文章目录系列文章目录不用Vue2使用Pinia举例子?1.笔者的个人看法:2.总结一、Pinia是什么1.状态管理工具(类比Vuexÿ…...
python面向对象编程解释
python是一个面向对象的编程语言 面向过程的开发语言有C,面向对象除了python还有java等语言 具体来讲: 面向过程 :举个例子,比如说,把大象装进冰箱总共分几步,第一步,把冰箱门打开,…...
ARM(IMX6U)嵌入式软件裸机开发之环境搭建与配置
目录 前沿 Ubuntu 和 Windows 文件互传 Ubuntu 下 NFS 和 SSH 服务开启 Ubuntu 交叉编译工具链安装 Source Insight 软件安装和使用 Visual Studio Code 软件的安装和使用 前沿 为什么我们要学习裸机开发呢? 1、裸机开发是了解所使用的 CPU 最直接、最简单的方…...
Java文件复制多种方法
1、InputStream与OutputStream 创建两个文件 - 源和目标。然后我们从源创建InputStream并使用OutputStream将其写入目标文件进行 java 复制文件操作。 private static void copyFileUsingStream(File source, File dest) throws IOException {InputStream is null;OutputStr…...
Java语言-----封装、继承、抽象、多态、接口
目录 前言 一.封装 1.1封装的定义 1.2访问修饰符的使用 二.继承 2.1继承的定义 2.2继承的方法 2.3继承使用注意点 三.多态 3,1多态的定义 3.2动态绑定 3.3方法重写 3.4向上(向下)转型 四.抽象 4.1抽象的概述和定义 4.2抽象的使用 五…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
