SqlUtils 使用

一、前言

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

二、SqlUtils 使用

1、引入依赖

xml 复制代码
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-data-sqlutils</artifactId>
</dependency>

2、新建数据库表(for MySql)

sql 复制代码
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 的注解。

java 复制代码
@Data
public class Book {
    private Long id;
    private String name;
    private String author;
}

4、添加数据源配置

yml 复制代码
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 并使用

注入

java 复制代码
@Component
public class BookDao {
    @Inject
    private SqlUtils sqlUtils;
}

查询操作

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

新增操作

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

更新操作

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

总结

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

相关推荐
雨中飘荡的记忆19 小时前
Spring AI + MCP:从入门到实战
java·人工智能·spring
callJJ19 小时前
Docker 代码沙箱与容器池技术详解
java·运维·docker·容器·oj系统·代码沙箱
wangmengxxw19 小时前
SpringAI-mcp-入门案例
java·服务器·前端·大模型·springai·mcp
燕山石头19 小时前
java模拟Modbus-tcp从站
java·开发语言·tcp/ip
觉醒大王19 小时前
简单说说参考文献引用
java·前端·数据库·学习·自然语言处理·学习方法·迁移学习
wangmengxxw19 小时前
SpringAI-MySQLMcp服务
java·人工智能·mysql·大模型·sse·springai·mcp
weixin_4492900119 小时前
EverMemOS 访问外部(deepinfra)API接口
java·服务器·前端
爱装代码的小瓶子19 小时前
【Linux基础】操作系统下的进程与虚拟内存的关系
android·java·服务器
淮北49419 小时前
大模型学习(二、使用lora进行微调)
java·服务器·学习
瑞雪兆丰年兮19 小时前
[从0开始学Java|第一天]Java入门
java·开发语言