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=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 是更方好方案。具体根据开发决定。
SqlUtils 使用的更多相关文章
- 【JDBC 报错】Connections could not be acquired from the underlying database!
项目启动报错: [2016-07-13 10:04:15,074] ERROR org.apache.ibatis.executor.BaseExecutor Could not get a data ...
- 连接mysql提示com.mchange.v2.resourcepool.BasicResourcePool
1.com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@6ff9129c com.mchange.v2.resourc ...
- 登录Cloudera Manager时报错org.hibernate.exception.GenericJDBCException: Could not open connection
去Cloudera Server上边看了一下日志: cat /opt/cloudera-manager/log/cloudera-scm-server/cloudera-scm-server.log ...
- C3P0数据库连接池的相关bug解决
数据库连接池的几个常见bug: 1.警告: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@76c7022e -- ...
- servlet 项目 ,,启动没问题,,但是,一请求也面就报错误。。。。求解决。。。。。。。。。。。。。各种百度,都没解决了啊。。。。。急急急急急急急急急急急急急急急急急急
信息: Server startup in 1674 mslog4j:WARN No appenders could be found for logger (com.mchange.v2.log.M ...
- c3p0获取连接Connection后的Close()---释疑
论题: java c3p0获取连接Connnection 之后, 调用 con.close( ) 是否真的关闭了物理连接 ? 简答: c3p0采用连接池, 目的就是提前预置一定数量的连接, 在使用时候 ...
- android_orm框架之greenDAO(二)
一.概述 在上次greenDao第一篇文章中,我们对greenDao的使用步骤和基本用法给大家做了介绍,文章链接:http://www.cnblogs.com/jerehedu/p/4304766.h ...
- 开源项目Druid的提取SQL模板
在数据库审计中,常常用到SQL模板,这样提取一次模板,下一次就不用对相同的模板的SQL进行相关操作.对此Druid提供相应的工具类进行SQL模板提取: package com.dbappsecurit ...
- 数据库无法连接JDBC
解决:Connections could not be acquired from the underlying database! 博客分类: 问题解决 数据库 iBatis og4j:WARN ...
- MyBatis多租户隔离插件开发
在SASS的大潮流下,相信依然存在很多使用一个数据库为多个租户提供服务的场景,这个情况下一般是多个租户共用同一套表通过sql语句级别来隔离不同租户的资源,比如设置一个租户标识字段,每次查询的时候在后面 ...
随机推荐
- 《Python数据可视化之matplotlib实践》 源码 第一篇 入门 第二章
图 2.1 import matplotlib as mpl import matplotlib.pyplot as plt mpl.rcParams['font.sans-serif']=['Sim ...
- 【转载】 IEEE Signal Processing Letters(SPL)投稿经验分享
版权声明:本文为CSDN博主「yellow7-」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/weixin_4 ...
- CCF A类会议 —— AAAI2022 论文审稿模板
======================================================= 前段时间为实验室负责审理AAAI 2022的会议稿件,感觉这个审稿模板还是不错的,这里保 ...
- mpi4py和cupy的联合应用(anaconda环境):GPU-aware MPI + Python GPU arrays
Demo代码: from mpi4py import MPI import cupy as cp comm = MPI.COMM_WORLD size = comm.Get_size() rank = ...
- 局域网中linux和window共享文件方案——samba
注明: 曾经写过:局域网中如何为Ubuntu20.04和window10共享文件,本文可以视作为该篇的续篇. 本文主要内容为Samba软件的安装和配置,以及相关的磁盘操作. 注意:(硬盘的UUID会受 ...
- 用海豚调度器定时调度从Kafka到HDFS的kettle任务脚本
在实际项目中,从Kafka到HDFS的数据是每天自动生成一个文件,按日期区分.而且Kafka在不断生产数据,因此看看kettle是不是需要时刻运行?能不能按照每日自动生成数据文件? 为了测试实际项目中 ...
- FreeSWITCH对接http协议的tts服务
操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 FreeSWITCH里面有个mod_tts_commandline模块,可以用来对接http协议的tts服务,今 ...
- 使用 prefetchComponents 进行组件预取
title: 使用 prefetchComponents 进行组件预取 date: 2024/8/17 updated: 2024/8/17 author: cmdragon excerpt: 摘要: ...
- CF1730G
CF1703G 链接: Problem - 1703G - Codeforces 题目大意: 你有 \(n\) 个箱子.第 \(i\) 个箱子中有 \(a_i\) 个硬币.你需要按照从箱子 \(1\) ...
- YOLOv10添加输出各类别训练过程指标
昨天有群友,在交流群[群号:392784757]里提到了这个需求,进行实现一下 V10 官方代码结构相较于 V8 稍微复杂一些 yolov10 是基于 v8 的代码完成开发,yolov10 进行了继承 ...