首页 > 数据库 >SqlUtils 使用

SqlUtils 使用

时间:2024-10-16 17:09:59浏览次数:1  
标签:NULL name utf8mb4 book 使用 SqlUtils public

一、前言

随着 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=true
    driverClassName: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456

5、注入 SqlUtils 并使用

注入

@Component
public class BookDao {
    @Inject
    private 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 是更方好方案。具体根据开发决定。

标签:NULL,name,utf8mb4,book,使用,SqlUtils,public
From: https://www.cnblogs.com/noear/p/18470374

相关文章

  • IDEA 使用 SVN 操作指南
    IDEA配置SVN拉取代码1、电脑上先安装SVN客户端:TortoiseSVN客户端安装,IDEA本身也是通过SVN客户端向服务器发送命令。2、IDEA配置SVN:File–>Setting–>VersionControl–>Subversion,填入安装好的SVN客户端exe程序路径,如:D:\ProgramFiles\TortoiseSVN\bin\svn.exe......
  • springboot使用自定义注解将对象注入容器中
    在SpringBoot中,你可以通过自定义注解和Spring的`BeanPostProcessor`来将对象注入到Spring容器中。以下是一个简单的实现步骤:1.**创建自定义注解**:importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.Reten......
  • 使用kettle常见异常情况处理
    kettle版本:pdi-ce-9.2.0.0-290kettle之Pan简介:pan是一个转换执行引擎,用来执行转换。 1.-version显示版本信息2.-file=filename运行的文件3.-param:key=value指定命名参数4.-log=loggingfilename设置日志文件5.-level......
  • 【北京迅为】itop-3562机器视觉opencv开发手册使用OpenCV处理图像
    iTOP-3562开发板采用瑞芯微RK3562处理器,主频2.0GHz,采用四核A53+MaliG52架构,主频2GHz,内置1TOPSNPU算力,具有多个嵌入式硬件引擎,以优化高端应用的性能。     【公众号】迅为电子----------------------------------------------------3.1颜色转换本小节代码在配套资料“iTOP-3......
  • 使用Python time库的perf_counter统计程序执行时间
    使用Pythontime库的perf_counter统计程序执行时间1.什么是`perf_counter`?2.为什么使用`perf_counter`?3.如何使用`perf_counter`统计程序执行时间?3.1基本用法3.2测量函数的执行时间4.注意事项5.总结在编写Python程序时,我们经常需要评估代码的性能,特别是当我......
  • 【北京迅为】itop-3562机器视觉opencv开发手册使用OpenCV处理图像
              iTOP-3562开发板采用瑞芯微RK3562处理器,主频2.0GHz,采用四核A53+MaliG52架构,主频2GHz,内置1TOPSNPU算力,具有多个嵌入式硬件引擎,以优化高端应用的性能。     【公众号】迅为电子----------------------------------------------------3.1颜色......
  • 使用LLaMA-Factory训练LLM大模型并用ollama调用
    环境搭建系统环境需要Nvidia显卡,至少8G显存,且专用显存与共享显存之和大于20G建议将非安装版的环境文件都放到非系统盘,方便重装或移植以Windows11为例,非安装环境文件都放在E盘下设置自定义Path文件夹创建E:\mypath文件夹,将其添加进用户环境变量Path中,之后会用CMake下载......
  • 使用宝塔面板一键部署.NET Core
    都2024年了,搜了一下网上关于在宝塔上部署.netCore项目的,基本还是五六年前那一套: supervisor守护进程启动项目+ 新增静态站点+手动配置反向代理全套下来也挺麻烦的........前几天在一台闲置主机上安装了个宝塔面板版本是:9.0  发现网站选项里多了很多选项,万恶的是居......
  • 使用CORS解决跨域问题
    如果发起请求所在主机(也称为域)和处理请求所在主机的协议、域名和端口号这三者中有任何一项不同,那么发出的请求就叫跨域请求。出于网络安全性方面的考虑,跨域请求会被限制,SpringBoot后端不能直接处理跨域请求,为了解决这一问题,可以在后端项目中引入CORS解决方案。在CORS(Cros......
  • 如何在鸿蒙 NEXT 中使用 @Builder 装饰器优化 UI 组件的复用?
    在开发鸿蒙NEXT应用时,咱们需要经常创建自定义组件,由于自定义组件内部UI结构固定,仅与使用方进行数据传递,因此,ArkUI还提供了一种更轻量的UI元素复用机制@Builder。大家好,我是V哥,在鸿蒙NEXT开发中,@Builder装饰器是一种轻量级的UI元素复用机制,它允许开发者将重复使用......