【Java】JDBC Part6 Apache-DBUtil & Spring-JdbcTemplate
Apache-DBUtils
开源的JDBC工具类,对JDBC的简单封装
SQL操作交给了QueryRunner的实例
Maven依赖
<!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.7</version>
</dependency>
常用API
插入语句测试【删改同理操作】
@Test
public void dbTest() throws SQLException {
QueryRunner queryRunner = new QueryRunner();
Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByOriginalJdbc();
String sql = "insert into user(user_name,user_password,user_createTime) values(?,?,?);";
int update = queryRunner.update(connectionByOriginalJdbc, sql, "你弟含王", "121314",CompleteJdbcUtils.parseToSqlDate("1997-09-06"));
System.out.println(update);
CompleteJdbcUtils.releaseResource(connectionByOriginalJdbc,null,null);
}
查询单个的QueryRunner
- BeanHandler<T>
@Test
public void dbTest2() throws SQLException {
QueryRunner queryRunner = new QueryRunner();
Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByHikari();
// 实体类处理器对象
BeanHandler<User> beanHandler = new BeanHandler<User>(User.class);
String sql = "select * from user where user_id = ?;";
// 根据BeanHandler反射过去 只能处理单个对象返回
User query = queryRunner.query(connectionByOriginalJdbc, sql, beanHandler,3);
System.out.println(query);
CompleteJdbcUtils.releaseResource(connectionByOriginalJdbc,null,null);
}
用Map封装单个记录的 MapHandler,默认泛型<String,Object>
@Test
public void dbTest21() throws SQLException {
QueryRunner queryRunner = new QueryRunner();
Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByHikari();
// 实体类处理器对象
MapHandler mapHandler = new MapHandler(); // <String,Object>
String sql = "select * from user where user_id = ?;";
// 根据BeanHandler反射过去 只能处理单个对象返回
Map<String, Object> map = queryRunner.query(connectionByOriginalJdbc, sql, mapHandler, 3);
System.out.println(map);
CompleteJdbcUtils.releaseResource(connectionByOriginalJdbc,null,null);
}
多个记录的BeanListHandler<T>处理
@Test
public void dbTest3() throws SQLException {
QueryRunner queryRunner = new QueryRunner();
Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByHikari();
// 实体类处理器对象
BeanListHandler<User> beanHandler = new BeanListHandler<User>(User.class);
String sql = "select * from user;";
// 根据BeanHandler反射过去 返回List集合封装的对象的处理
List<User> users = queryRunner.query(connectionByOriginalJdbc, sql, beanHandler);
for (User user:users) {
System.out.println(user);
}
CompleteJdbcUtils.releaseResource(connectionByOriginalJdbc,null,null);
}
或者是MapListHandler,泛型是<String,Object>
@Test
public void dbTest31() throws SQLException {
QueryRunner queryRunner = new QueryRunner();
Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByHikari();
// 实体类处理器对象
MapListHandler mapListHandler = new MapListHandler();
String sql = "select * from user;";
List<Map<String, Object>> maps = queryRunner.query(connectionByOriginalJdbc, sql, mapListHandler);
for (Map map:maps) {
System.out.println(map);
}
CompleteJdbcUtils.releaseResource(connectionByOriginalJdbc,null,null);
}
ScalarHandler 用于特殊值的获取,例如聚合函数的操作
https://www.bilibili.com/video/BV1eJ411c7rf?p=53
自定义结果集处理器的方法
https://www.bilibili.com/video/BV1eJ411c7rf?p=54
JdbcTemplate来源于SpringJDBC
提供一个JDBC的模板来实现CRUD
本身不提供连接池和JDBC的功能,专门用于CRUD
所以你还需要前面所学过 厂商驱动 & 数据源【连接池】
这里不再赘述
导入依赖
<!-- SpringJDBC JdbcTemplate --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.6.RELEASE</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.6.RELEASE</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.6.RELEASE</version>
</dependency> <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
常用的方法:
- update() 增、删、改 - queryForMap() 查询单个结果返回Map容器 - queryForList() 查询多个结果返回List容器 - query() 查询单个结果返回实体类对象 - queryForObject() 查询单个结果返回原型
UPDATE
@Test
public void update(){
org.springframework.jdbc.core.JdbcTemplate jdbcTemplate = new org.springframework.jdbc.core.JdbcTemplate(CompleteJdbcUtils.getDataSourceFromHikari()); String sql = "UPDATE user SET user_name = ?,user_password = ? WHERE user_id = ?"; int update = jdbcTemplate.update(sql,"阿伟2","333666",1); System.out.println(update);
}
调用存储过程和函数的资料:
https://www.cnblogs.com/lz2017/p/7500411.html
【Java】JDBC Part6 Apache-DBUtil & Spring-JdbcTemplate的更多相关文章
- 【Java】JDBC连接数据库
JDBC介绍 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...
- 【Java】JDBC连接MySQL
JDBC连接MySQL 虽然在项目中通常用ORM的框架实现持久化.但经常因测试某些技术的需要,要写一个完整的JDBC查询数据库.写一个在这儿备份. 首先引入驱动包: <dependencies& ...
- 【Java】JDBC编程套路
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5847020.html 学习Java开发,一个必须掌握的知识点,就是数据库操作.当程序需要用到的数据达到一定程度 ...
- 【shiro】报错:Caused by: java.lang.ClassNotFoundException: org.apache.shiro.spring.LifecycleBeanPostProcessor
Caused by: java.lang.ClassNotFoundException: org.apache.shiro.spring.LifecycleBeanPostProcessor at o ...
- 【报错】spring整合activeMQ,pom.xml文件缺架包,启动报错:Caused by: java.lang.ClassNotFoundException: org.apache.xbean.spring.context.v2.XBeanNamespaceHandler
spring版本:4.3.13 ActiveMq版本:5.15 ======================================================== spring整合act ...
- 【Java】-NO.16.EBook.4.Java.1.012-【疯狂Java讲义第3版 李刚】- JDBC
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.012-[疯狂Java讲义第3版 李刚]- JDBC Style:EBook Series:Java ...
- 【Java】代处理?代理模式 - 静态代理,动态代理
>不用代理 有时候,我希望在一些方法前后都打印一些日志,于是有了如下代码. 这是一个处理float类型加法的方法,我想在调用它前打印一下参数,调用后打印下计算结果.(至于为什么不直接用+号运算, ...
- 【Java】模拟Sping,实现其IOC和AOP核心(二)
接着上一篇,在上一篇完成了有关IOC的注解实现,这一篇用XML的方式实现IOC,并且完成AOP. 简易的IOC框图 注解的方式实现了左边的分支,那么就剩下右边的XML分支: XmlContext:这个 ...
- 【Java】模拟Sping,实现其IOC和AOP核心(一)
在这里我要实现的是Spring的IOC和AOP的核心,而且有关IOC的实现,注解+XML能混合使用! 参考资料: IOC:控制反转(Inversion of Control,缩写为IoC),是面向对象 ...
- 【Java】一台服务器配置多个Tomcat
需求缘由 最近接收了一个新的工具业务:ipublish发布系统,刚接手这个业务的时候,发现每次发布新的代码 需要到群里告知大家,我要停服务几分钟,准备更新代码啦.这尼玛 哪个公司都不敢这么牛逼的和用户 ...
随机推荐
- golang 的 net/http 和 net/rpc 的区别, rpc 效率比 http 高?
在Go语言中,net/http 和 net/rpc 是两个不同的包,它们分别用于实现不同的网络通信模式: net/http: net/http 包主要用于构建Web服务和客户端,它实现了HTTP协议, ...
- 使用elementUI组件来完成前台展示
使用elementUI组件来完成前台展示,当然不是全部都用,有用到的时候,才用. 网址:https://element.eleme.cn/#/zh-CN 安装 cnpm i element-ui -S ...
- 项目管理--PMBOK 读书笔记(7)【项目成本管理】
1.成本术语: 2.三点估算(PERT): 平均估算值=(最可能持续时间*4+最乐观+最悲观)/6 标准差=(最乐观-最悲观)/6 68.26%.95.46%.99.73% 3.估算成本的工具:质量成 ...
- 判断日期是否为周六周日,BigDecimal比较大小
判断日期是否为周六周日,BigDecimal比较大小 package com.example.core.mydemo.date; import java.math.BigDecimal; import ...
- AGE SORT
AGE SORT 你有所有城市的人的年齡資料,而且這城市的人們都大於1歲,且都不會活超過100歲.現在你有個簡單的任務以升冪去排序所有的年齡 Input 接下來會有很多筆的資料,每筆資料從輸入n 開始 ...
- 总结:软件开发的3个方向 与 嵌入式Linux学习路线(驱动方向)
--- title: 嵌入式Linux学习路线图(驱动方向) date: 2020-05-09 07:17:58 categories: tags: - embeded - summary - arm ...
- C#/.NET/.NET Core优秀项目和框架2024年6月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍.功能特点.使用方式以及部分功能截图 ...
- .NET 6 Entity Framework Core Db First(2) 增删改查
基础代码 在Program.cs注入DemoContext 新建HomeController,继承ControllerBase 添加Controller特性,[ApiController] [Rout ...
- SpringBoot集成实时通讯WebSocket和其它代替方案
WebSocket 双向实时通讯 一.添加WebSocketConfig配置类 /** * 开启WebSocketConfig */ @Configuration public class WebSo ...
- Solo 开发者周刊 (第6期):仅需一个动作,秒变时间管理大师?
这里会整合 Solo 社区每周推广内容.产品模块或活动投稿,每周五发布.在这期周刊中,我们将深入探讨开源软件产品的开发旅程,分享来自一线独立开发者的经验和见解.本杂志开源,欢迎投稿. 产品推荐 1. ...