Android Room 使用模版

 

文章目录

  • 一、配置依赖
    plugins {id 'kotlin-kapt'
    }android {compileOptions {sourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17}kotlinOptions {jvmTarget = '17'}
    }dependencies {implementation("androidx.room:room-runtime:2.4.2")kapt("androidx.room:room-compiler:2.4.2")
    }
  • 二、标记实体类
    @Entity(tableName = "banner")
    data class Banner(val desc: String,@PrimaryKeyval id: Int,val imagePath: String,val isVisible: Int,val order: Int,val title: String,val type: Int,val url: String
    )

  • 三、封装工具类
    object RoomUtil {@Volatileprivate var mDataBase: MyDataBase? = nullfun getInstance(context: Context): MyDataBase {if (mDataBase == null) {synchronized(this) {if (mDataBase == null) {mDataBase = Room.databaseBuilder(context, MyDataBase::class.java, "my_database").allowMainThreadQueries().build()}}}return mDataBase!!}@Database(entities = [Banner::class], version = 1)abstract class MyDataBase : RoomDatabase() {abstract fun bannerDao(): BannerDao}@Daointerface BannerDao {@Query("SELECT * FROM banner")fun getBanners(): List<Banner>@Query("SELECT * FROM banner WHERE id = :userId")fun getBannerById(userId: Int): Banner?@Insert(onConflict = OnConflictStrategy.REPLACE) //重复时则会替换fun insert(user: Banner)@Deletefun delete(user: Banner)@Updatefun update(user: Banner)}
    }

  • 四、使用
    data.forEach {RoomUtil.getInstance(this@WelcomeActivity).bannerDao().insert(it)}val banner = RoomUtil.getInstance(this@WelcomeActivity).bannerDao().getBanners()[0]RoomUtil.getInstance(this@WelcomeActivity).bannerDao().delete(banner)
    RoomUtil.getInstance(this@WelcomeActivity).bannerDao().getBanners()
    RoomUtil.getInstance(this@WelcomeActivity).bannerDao().getBannerById(banner.id)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【一站式学会Kotlin】第十节:kotlin 语言的可控性特点和安全调用操作符

作者介绍: 百度资深Android工程师T6,在百度任职7年半。 目前:成立赵小灰代码工作室,欢迎大家找我交流Android、微信小程序、鸿蒙项目。= 一:通俗易懂的人工智能教程:https://www.captainbed.cn/nefu/ 点一下,打开新世界的大门。 二:【一站式学会Kotlin】免费领取:作者…

QTextEdit将多个字符作为一个整体,不可单独修改

考虑一个问题&#xff0c;QTextEdit如何实现类似微信和QQ聊天输入框中的“xxx”效果&#xff0c;其内容作为一个整体&#xff0c;以突出颜色显示&#xff0c;并且不可以单独编辑修改&#xff0c;只能整体删除修改。 突出颜色显示有很多方式可以实现&#xff0c;例如 通过setT…

Rust学习心得

我分享一下一年的Rust学习经历&#xff0c;从书到代码都一网打尽。 关于新手如何学习Rust&#xff0c;我之前在Hacker News上看到了这么一篇教程&#xff1a; 这篇教程与其他教程不同的时&#xff0c;他不是一个速成教程&#xff0c;而是通过自己的学习经历&#xff0c;向需要…

记录一次Netty的WSS异常

概述 业务场景 应用通过 WSS 客户端连接三方接口。在高并发压测时&#xff0c;出现了请求服务器写入失败的异常&#xff0c;该异常是偶发&#xff0c;出现的概率不到千分之一&#xff0c;异常如下图所示。 问题概述 注意&#xff1a; 因为握手是通过 http 协议进行的。所以…

tcpdump源码分析

进入tcpdump.c&#xff08;函数入口&#xff09;之前&#xff0c;先看一些头文件netdissect.h里定义了一个数据结构struct netdissect_options来描述tcdpump支持的所有参数动作&#xff0c;每一个参数有对应的flag, 在tcpdump 的main 里面&#xff0c; 会根据用户的传入的参数来…

鸿蒙ArkTS声明式开发:跨平台支持列表【触摸事件】

触摸事件 当手指在组件上按下、滑动、抬起时触发。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独…

总是等不是办法,向媒体投稿你得学会用新方法

初入信息宣传领域,我怀揣着对文字的热爱与传播价值的热情,肩负起了单位活动的宣传报道重任。那时的我,满脑子都是传统的投稿思维:精心撰写每一篇稿件,然后逐一搜寻各大媒体的投稿邮箱,一封封邮件满怀期待地发出,像播撒希望的种子,渴望在广袤的媒体土壤中生根发芽。然而,理想很丰…

红蓝对抗-HW红蓝队基本知识(网络安全学习路线笔记)

第一, 什么是蓝队 蓝队&#xff0c;一般是指网络实战攻防演习中的攻击一方。 蓝队一般会采用针对目标单位的从业人员&#xff0c;以及目标系统所在网络内的软件、硬件设备同时执行多角度、全方位、对抗性的混合式模拟攻击手段&#xff1b;通过技术手段实现系统提权、控制业务、…

将点位转换为圆环极坐标绘画

将一段染色体可视化为一个圆环,根据一段基因的起始点和终止点绘画,根据基因的方向绘画箭头,可以任意确定染色体哪个位置在哪个角度上,例如染色体的1700点位在180上,默认是顺时针方向从起始点向终止点绘画。 1.将一段染色体的基因数组加上极坐标绘画属性 function compute…

pycharm连接阿里云服务器过程记录

因为不想用自己的电脑安装anaconda环境,所以去查了一下怎么用服务器跑代码,试着用pycharm连接阿里云服务器,参考了很多博客,自己简单配置了一下,记录一下目前完成的流程. 主要是:阿里云服务器的远程登录和安装anaconda,以及怎么用pycharm连接阿里云服务器上的解释器. 小白刚开始…

Day 3:1738. 找出第 K 大的异或坐标值

Leetcode 1738. 找出第 K 大的异或坐标值 给你一个二维矩阵 matrix 和一个整数 k &#xff0c;矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 < i < a < m 且 0 < j < b < n 的元素 matrix[i][j]&#xff08;下标从 0 开始计…

报错:java: 找不到符号 符号: 类 Notice 位置: 类 com.example.service.impl.NoticeServiceImpl

家人们&#xff0c;报这个错不要慌&#xff01;自信自己没有问题的&#xff0c;就是缓存问题&#xff01;&#xff01; 重新启动一下idea就OK了&#xff01;&#xff01;&#xff01; 有时候IDE可能会出现缓存或其他问题&#xff0c;尝试重启IDE也可能有助于解决问题。

Dou音滑块日志分析

记得加入我们的学习群&#xff1a;961566389 点击链接加入群聊&#xff1a;[https://h5.qun.qq.com/s/62P0xwrCNO](https://h5.qun.qq.com/s/62P0xwrCNO) 1.插桩-打印日志 获取背景和滑块的图片的接口一看没啥参数需要逆向的 验证的接口body参数需要进行逆向&#xff0c;直接…

浅谈Docker容器的网络通信原理

文章目录 1、回顾容器概念2、容器网络3、容器与主机之间的网络连通4、交换机的虚拟实现---虚拟网桥&#xff08;Bridge&#xff09;5、Docker 守护进程daemon管理容器网络 1、回顾容器概念 我们知道容器允许我们在同一台宿主机&#xff08;电脑&#xff09;上运行多个服务&…

定制Jackson 的ObjectMapper(编程式),自定义json转换处理器来指定序列化和反序列化规则。

文章目录 引言I 定制ObjectMapper1.1 自定义json转换处理器的方式1.2 完全替换Spring Boot的ObjectMapperII 自定义json转换处理器2.1 序列化时为JSON时新增枚举的描述字段2.2 反序列化JSON时将枚举值转为枚举类型引言 ObjectMapper 是 Jackson 来处理 Json 以及 xml 转换的一…

moviepy入门

1. 简介 由于恶心的工作和没有规划的部门安排&#xff0c;我被排到了算法部门&#xff0c;从事和算法没有半毛钱关系的业务上&#xff0c;也就是。。。搞视频。咋说呢&#xff1f;视频这东西我没有一点基础&#xff0c;还好有前人写好的代码&#xff0c;用的是moviepy和ffmpeg…

Zoho Campaigns邮件营销怎么发邮件?

Zoho Campaigns&#xff0c;作为业界领先的邮件营销平台&#xff0c;以其强大的功能、用户友好的界面以及深度的分析能力&#xff0c;为企业提供了一站式的邮件营销解决方案&#xff0c;助力企业高效地触达目标受众&#xff0c;构建并巩固庞大的客户基础。云衔科技为企业提供Zo…

零基础入门篇①⑤ Python不可变序列类型--元组

Python从入门到精通系列专栏面向零基础以及需要进阶的读者倾心打造,9.9元订阅即可享受付费专栏权益,一个专栏带你吃透Python,专栏分为零基础入门篇、模块篇、网络爬虫篇、Web开发篇、办公自动化篇、数据分析篇…学习不断,持续更新,火热订阅中🔥专栏限时一个月(5.8~6.8)重…

数据结构(四)

数据结构&#xff08;四&#xff09; 算法算法的特征算法和程序的区别怎么样评判一个算法的好坏 常见的查找算法线性树状哈希查找构建哈希函数的方法质数求余法解决冲突 算法 一堆指令的有序集合 算法的特征 唯一性&#xff1a;每一句话只有一种解释 有穷性&#xff1a;算法能…

企业活动想找媒体报道宣传怎样联系媒体?

在那遥远的公关江湖里,有一个传说,说的是一位勇士,手持鼠标和键盘,踏上了寻找媒体圣杯的征途。这位勇士,就是我们亲爱的市场部门小李,他的任务是为公司即将举行的一场盛大的企业活动找到媒体的聚光灯。 小李的故事,开始于一张空白的Excel表格,上面列着各大媒体的名称,旁边是一片…