一、前言
隨著 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 是更方好方案。具體根據開發決定。