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 是更方好方案。具体根据开发决定。

相关推荐
CodeCraft Studio11 小时前
【能源与流程工业案例】KBC借助TeeChart 打造工业级数据可视化平台
java·信息可视化·.net·能源·teechart·工业可视化·工业图表
摇滚侠11 小时前
Spring Boot 3零基础教程,WEB 开发 默认页签图标 Favicon 笔记29
java·spring boot·笔记
lang2015092811 小时前
Spring Boot SQL数据库全攻略
数据库·spring boot·sql
YSRM12 小时前
Leetcode+Java+图论+最小生成树&拓扑排序
java·leetcode·图论
沐浴露z12 小时前
【JVM】详解 Class类文件的结构
java·jvm·class
桦说编程12 小时前
Java并发编程:两种控制并发度的实现方法及其比较
java·后端
杯莫停丶12 小时前
设计模式之:单例模式
java·单例模式·设计模式
消失的旧时光-194312 小时前
@JvmStatic 的作用
java·开发语言·kotlin
火锅机器13 小时前
java 8 lambda表达式对list进行分组
java·开发语言·list