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

SqlUtils 使用

一、前言

随着 Solon 3.0 版本发布,新添加的 SqlUtils 接口,用于操作数据库,SqlUtils 是对 Jdbc 原始接口的封装。适合 SQL 极少或较复杂,或者 ORM 不适合的场景使用。

二、SqlUtils 使用

1、引入依赖
<dependency><groupId>org.noear</groupId><artifactId>solon-data-sqlutils</artifactId>
</dependency>
2、新建数据库表(for MySql)
CREATE TABLE `book`  (`id` bigint(20) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`author` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
3、定义实体类

使用了 lombok 的注解。

@Data
public class Book {private Long id;private String name;private String author;
}
4、添加数据源配置
solon.dataSources:book!: # ‘!’结尾表示默认class: "com.zaxxer.hikari.HikariDataSource"jdbcUrl: jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=truedriverClassName: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456
5、注入 SqlUtils 并使用

注入

@Component
public class BookDao {@Injectprivate SqlUtils sqlUtils;
}

查询操作

public List<Book> getAllBooks() {return sqlUtils.sql("select * from book").queryRowList().toBeanList(Book.class);
}

新增操作

public Long addBook(Book book) {return sqlUtils.sql("INSERT INTO book (name , author) VALUES (?,?)", book.getName(), book.getAuthor()).updateReturnKey();
}

更新操作

public int updateBook(Book book) {return sqlUtils.sql("UPDATE book SET name=?, author=? WHERE id=?", book.getName(), book.getAuthor(), book.getId()).update();
}

总结

使用 SqlUtils 可以完成基本的数据库操作,有更好的透明性。当然,持久化数据库操作 ORM 是更方好方案。具体根据开发决定。

相关文章:

SqlUtils 使用

一、前言 随着 Solon 3.0 版本发布&#xff0c;新添加的 SqlUtils 接口&#xff0c;用于操作数据库&#xff0c;SqlUtils 是对 Jdbc 原始接口的封装。适合 SQL 极少或较复杂&#xff0c;或者 ORM 不适合的场景使用。 二、SqlUtils 使用 1、引入依赖 <dependency><…...

平面声波——一维Helmhotz波动方程

平面声波的一维Helmholtz波动方程是一种简化的声波传播模型&#xff0c;适用于在一维空间中传播的声波。 声波的基本物理过程---傅里叶变换---Helmholtz方程 一、声波的基本波动方程 在无源、无耗散、均匀介质中的一维声波的波动方程为&#xff1a; 其中&#xff1a; 表示位…...

深度学习 简易环境安装(不含Anaconda)

在Windows上安装深度学习环境而不使用Anaconda&#xff0c;下面是一个基于pip的安装指南&#xff1a; 1. 安装Python 确保你已经安装了Python。可以从Python官网下载Python&#xff0c;并在安装时勾选“Add Python to PATH”选项。 注意&#xff0c;Python 不要安装最新版的…...

Java缓存技术(java内置缓存,redis,Ehcache,Caffeine的基本使用方法及其介绍)

目录 摘要 1. Java缓存技术概述 1.1定义 1.2 优势 1.3 应用场景 2. Java中的内置缓存实现 2.1 通过通过HashMap和ConcurrentHashMap实现缓存 3. Java缓存框架 3.1 Redis 3.1.1 redis的简介 3.1.4 Redis的工作原理 3.1.5 总结 3.2 Ehcache 3.2.1 Eh…...

YoloV9改进策略:主干网络改进|DeBiFormer,可变形双级路由注意力|全网首发

摘要 在目标检测领域,YoloV9以其高效和准确的性能而闻名。然而,为了进一步提升其检测能力,我们引入了DeBiFormer作为YoloV9的主干网络。这个主干网络的计算量比较大,不过,上篇双级路由注意力的论文受到很大的关注,所以我也将这篇论文中的主干网络用来改进YoloV9,卡多的…...

【力扣 | SQL题 | 每日3题】力扣2988,569,1132,1158

1 hard 3mid&#xff0c;难度不是特别大。 1. 力扣2988&#xff1a;最大部门的经理 1.1 题目&#xff1a; 表&#xff1a; Employees ---------------------- | Column Name | Type | ---------------------- | emp_id | int | | emp_name | varchar | | de…...

移动网络知识

一、3G网络 TD-SCDMA&#xff08;时分同步码分多址接入&#xff09;、WCDMA&#xff08;宽带码分多址&#xff09;和CDMA2000三种不同的3G移动通信标准 TD-SCDMA&#xff08;时分同步码分多址接入&#xff09;&#xff1a;中国自主开发的一种3G标准主要用于国内市场&#xff…...

CentOS系统Nginx的安装部署

CentOS系统Nginx的安装部署 安装包准备 在服务器上准备好nginx的安装包 nginx安装包下载地址为&#xff1a;https://nginx.org/en/download.html 解压 tar -zxvf nginx-1.26.1.tar.gz执行命令安装 # 第一步 cd nginx-1.26.1# 第二步 ./configure# 第三步 make# 第四步 mak…...

Leetcode 最长公共前缀

java solution class Solution {public String longestCommonPrefix(String[] strs) {if(strs null || strs.length 0) {return "";}//用第一个字符串作为模板,利用indexOf()方法匹配,由右至左逐渐缩短第一个字符串的长度String prefix strs[0];for(int i 1; i …...

[C#][winform]基于yolov5的驾驶员抽烟打电话安全带检测系统C#源码+onnx模型+评估指标曲线+精美GUI界面

【重要说明】 该系统以opencvsharp作图像处理,onnxruntime做推理引擎&#xff0c;使用CPU进行推理&#xff0c;适合有显卡或者没有显卡windows x64系统均可&#xff0c;不支持macOS和Linux系统&#xff0c;不支持x86的windows操作系统。由于采用CPU推理&#xff0c;要比GPU慢。…...

【Flutter】基础入门:开发环境搭建

Flutter 是一个强大的跨平台框架&#xff0c;支持在 Android、iOS、Windows、Linux、Web 等多种平台上开发应用。下面将详细介绍如何在各个平台上构建 Flutter 开发环境&#xff0c;并使用相同的项目代码构建出一个可以在多个平台运行的跨平台 Demo。 Flutter 环境配置&#x…...

AI学习指南深度学习篇-对比学习(Contrastive Learning)简介

AI学习指南深度学习篇 - 对比学习&#xff08;Contrastive Learning&#xff09;简介 目录 引言对比学习的背景对比学习的定义对比学习在深度学习中的应用 无监督学习表示学习 详细示例 基本示例先进示例 对比学习的优缺点总结与展望 1. 引言 随着人工智能&#xff08;AI&am…...

【蓝队技能】【规则开发1】Suricata-C2Webshell隧道

蓝队技能 Suricata-C2&Webshell&隧道 蓝队技能总结前言一、C2规则开发1.1 Sliver1.2 CS 二、内网隧道1.1 frps1.2 nps 三、webshell3.1 蚁剑3.2 冰蝎3.3 哥斯拉 总结 前言 本文聚焦于Suricata规则开发&#xff0c;提供针对Sliver、Cobalt Strike&#xff08;CS&#xf…...

全面了解 NGINX 的负载均衡算法

NGINX 提供多种负载均衡方法&#xff0c;以应对不同的流量分发需求。常用的算法包括&#xff1a;最少连接、最短时间、通用哈希、随机算法和 IP 哈希。这些负载均衡算法都通过独立指令来定义&#xff0c;每种算法都有其独特的应用场景。 以下负载均衡方法&#xff08;IP 哈希除…...

Java-继承与多态-上篇

关于类与对象&#xff0c;内容较多&#xff0c;我们分为两篇进行讲解&#xff1a; &#x1f4da; Java-继承与多态-上篇&#xff1a;———— <就是本篇> &#x1f4d5; 继承的概念与使用 &#x1f4d5; 父类成员访问 &#x1f4d5; super关键字 &#x1f4d5; supe…...

通过比较list与vector在简单模拟实现时的不同进一步理解STL的底层

cplusplus.com/reference/list/list/?kwlist 当我们大致阅读完list的cplusplus网站的文档时&#xff0c;我们会发现它提供的接口大致上与我们的vector相同。当然的&#xff0c;在常用接口的简单实现上它们也大体相同&#xff0c;但是它们的构造函数与迭代器的实现却大有不同。…...

软件I2C的代码

I2C的函数 GPIO的配置——scl和sda都配置为开漏输出 void MyI2C_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitTypeDef GPIO_InitStruture;GPIO_InitStruture.GPIO_Mode GPIO_Mode_Out_OD;GPIO_InitStruture.GPIO_PinGPIO_Pin_10 | GPIO_Pin_…...

登录时用户名密码加密传输(包含前后端代码)

页面输入用户名密码登录过程中&#xff0c;如果没有对用户名密码进行加密处理&#xff0c;可能会导致传输过程中数据被窃取&#xff0c;就算使用https协议&#xff0c;在浏览器控制台的Request Payload中也是能直接看到传输的明文&#xff0c;安全感是否还是不足。 大致流程&a…...

ai聊天对话页面-uniapp

流式传输打字机效果&#xff0c;只支持uniapp内使用 &#xff0c;下载地址 https://download.csdn.net/download/qq_54123885/89899859...

虚拟滚动列表如何实现?

highlight: a11y-dark 虚拟滚动列表&#xff0c;虚拟滚动的关键在于只渲染当前视口内可见的数据项&#xff0c;而不是一次性渲染所有数据项。这可以显著提高性能&#xff0c;尤其是在处理大量数据时。 以下是一个完整的虚拟滚动列表的示例代码&#xff1a; <!DOCTYPE htm…...

保姆级教程:用Docker快速部署FreeSWITCH的ASR服务(含FunASR、sherpa-ncnn)

基于Docker的FreeSWITCH语音识别服务实战指南 语音识别&#xff08;ASR&#xff09;技术正在重塑通信系统的交互方式。对于FreeSWITCH开发者而言&#xff0c;将高效ASR服务集成到电话系统中&#xff0c;可以解锁语音指令控制、实时字幕生成、智能客服等创新应用场景。Docker技术…...

Anaconda3 2025 安装教程【附安装包】快速安装下载

安装包https://qqstone.top/blog/anaconda3-2025 安装步骤 1. 解压压缩包 下载完成后&#xff0c;鼠标右击【Anaconda3 2025】压缩包&#xff0c;选择【解压至此处】。 2. 以管理员身份运行安装程序 打开解压后的文件夹&#xff0c;鼠标右击【Setup】选择【以管理员身份运行…...

Docker测试学习思路

Docker 核心概念学习与实战指南本文系统梳理 Docker 学习的核心思路与方法&#xff0c;用通俗类比帮助理解 Docker 的本质&#xff0c;涵盖镜像构建、容器运行、网络通信、数据持久化、资源限制五大核心能力&#xff0c;适合初学者建立清晰的 Docker 知识框架。一、Docker 到底…...

关闭蜂鸣器与外设的初始化代码

针对蓝桥杯单片机开发中关闭蜂鸣器与外设的初始化操作&#xff0c;以及创建标准.h头文件的必备代码&#xff0c;以下是详细的技术方案与实现代码。 1. 蓝桥杯单片机系统初始化与外设关闭 蓝桥杯官方使用的CT107D开发板&#xff08;以IAP15F2K61S2单片机为核心&#xff09;&am…...

90% 的代码交给 AI 后,人还剩什么本事?

问题定义、架构决策、结果取舍。 Cognition AI 及其研发的智能体 Devin 如何重塑软件工程的未来。作者指出&#xff0c;AI 已经能够接管 90% 的底层执行工作&#xff0c;包括编写代码和修复漏洞&#xff0c;使人类工程师从琐碎的实现细节中解放出来。在这一范式转变下&#xff…...

Visual C++组件维护完全指南:从问题诊断到系统优化

Visual C组件维护完全指南&#xff1a;从问题诊断到系统优化 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C组件维护是Windows系统稳定运行的关键环节&…...

IP-Adapter-FaceID在社交媒体中的应用:内容创作与分享

IP-Adapter-FaceID在社交媒体中的应用&#xff1a;内容创作与分享 【免费下载链接】IP-Adapter-FaceID 项目地址: https://ai.gitcode.com/hf_mirrors/h94/IP-Adapter-FaceID IP-Adapter-FaceID是一款基于Stable Diffusion的AI人脸生成工具&#xff0c;它通过面部识别模…...

3步突破Navicat试用期限制:让数据库管理工具持续为你服务

3步突破Navicat试用期限制&#xff1a;让数据库管理工具持续为你服务 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 作为数据库开发者的日常伴侣&#xff0c;Navicat以其直观的…...

给AI模型‘打补丁’:用‘上下文提示’和‘查询分解’两招,轻松提升多模态大模型的抗攻击能力

多模态大模型防御实战&#xff1a;用上下文提示与查询分解抵御图像对抗攻击 当你在社交媒体上传一张"猫"的照片&#xff0c;AI系统却识别为"狗"——这种看似无害的错误在医疗影像分析或自动驾驶场景中可能引发灾难。2024年CVPR会议揭示了一个关键发现&…...

美的集团2025年营收创新高、利润100%分红 落地1.3万个AI智能体

3月30日&#xff0c;美的集团发布2025年年报&#xff0c;实现营业总收入4585亿元&#xff0c;同比增长12.1%&#xff1b;归属于上市公司股东的净利润439.5亿元&#xff0c;同比上升14%。在业绩再创新高的同时&#xff0c;伴随我国“人工智能”行动的全面实施&#xff0c;美的集…...