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的更多相关文章

  1. 【Java】JDBC连接数据库

    JDBC介绍 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...

  2. 【Java】JDBC连接MySQL

    JDBC连接MySQL 虽然在项目中通常用ORM的框架实现持久化.但经常因测试某些技术的需要,要写一个完整的JDBC查询数据库.写一个在这儿备份. 首先引入驱动包: <dependencies& ...

  3. 【Java】JDBC编程套路

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5847020.html 学习Java开发,一个必须掌握的知识点,就是数据库操作.当程序需要用到的数据达到一定程度 ...

  4. 【shiro】报错:Caused by: java.lang.ClassNotFoundException: org.apache.shiro.spring.LifecycleBeanPostProcessor

    Caused by: java.lang.ClassNotFoundException: org.apache.shiro.spring.LifecycleBeanPostProcessor at o ...

  5. 【报错】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 ...

  6. 【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 ...

  7. 【Java】代处理?代理模式 - 静态代理,动态代理

    >不用代理 有时候,我希望在一些方法前后都打印一些日志,于是有了如下代码. 这是一个处理float类型加法的方法,我想在调用它前打印一下参数,调用后打印下计算结果.(至于为什么不直接用+号运算, ...

  8. 【Java】模拟Sping,实现其IOC和AOP核心(二)

    接着上一篇,在上一篇完成了有关IOC的注解实现,这一篇用XML的方式实现IOC,并且完成AOP. 简易的IOC框图 注解的方式实现了左边的分支,那么就剩下右边的XML分支: XmlContext:这个 ...

  9. 【Java】模拟Sping,实现其IOC和AOP核心(一)

    在这里我要实现的是Spring的IOC和AOP的核心,而且有关IOC的实现,注解+XML能混合使用! 参考资料: IOC:控制反转(Inversion of Control,缩写为IoC),是面向对象 ...

  10. 【Java】一台服务器配置多个Tomcat

    需求缘由 最近接收了一个新的工具业务:ipublish发布系统,刚接手这个业务的时候,发现每次发布新的代码 需要到群里告知大家,我要停服务几分钟,准备更新代码啦.这尼玛 哪个公司都不敢这么牛逼的和用户 ...

随机推荐

  1. 大数据平台搭建手册——hadoop

    从0开始 超详细搭建hadoop平台手册 创建三台使用centos7操作系统的虚拟机 基础环境配置 ps:不建议使用DHCP,因为ip地址会变动 配置ip 1.master [root@master ...

  2. kettle从入门到精通 第六十四课 ETL之kettle kettle中执行SQL脚本步骤,使用需当心

    1.群里有不定时会有同学反馈执行SQL脚本步骤使用有问题,那么咱们今天一起来学习下该步骤.trans中的执行SQL脚本有两方面功能,使用时需小心,不然很容易踩坑. 官方定义: 翻译: 您可以使用此步骤 ...

  3. kettle从入门到精通 第二十七课 邮件发送

    1.我们平常在做数据同步的时候,担心转换或者job没有正常运行,需要加上监控机制,这个时候就会用到邮件功能. 下图是一个简单的测试邮件发送功能的转换.在kettle.properties文件中设置邮件 ...

  4. ABC340

    E 我们可以知道每一个点在每一轮加多少,具体如下: 假如现在操作的点的为 \(k\).那么所有的数都至少会加 \(\dfrac{A_k}{n}\).但是肯定有剩的,剩了 \(A_k \mod n\). ...

  5. 红米K70E支付宝无指纹支付选项的解决方法

    红米K70E这台手机,支付宝里无指纹支付选项,百度了一下,也没结果.自己摸索了下,终于折腾出了指纹支付. 解决方法: 在手机-设置-指纹.面部与密码-指纹解锁-指纹支付-支付宝-更新证书. 杀掉支付宝 ...

  6. C#.NET6 ASP.NET CORE MVC 获取客户端IP

    重点是拿到HttpContext 对象. 先从Headers["Cdn-Src-Ip"] 中取IP,其次从Headers["X-Forwarded-For"]  ...

  7. Vue学习:15.组件化开发

    组件化开发 组件化开发是一种软件开发方法,它将应用程序拆分成独立的.可重用的模块,每个模块都被称为组件.这些组件可以独立开发.测试.维护和部署,从而提高了代码的可维护性.可扩展性和复用性.在前端开发中 ...

  8. java怎样把两个list里边相同的数据取出

    1 import java.util.ArrayList; 2 import java.util.List; 3 4 public class I { 5 6 public static void m ...

  9. WebStorm 中自定义文档注释模板

    WebStorm 中自定义文档注释模板 前提 使用WebStrom写HTML,JavaScript,进行头部注释. 减少重复劳动 养成良好的代码习惯,规范化代码,规范的注释便于后续维护. 头部注释内容 ...

  10. Bike Sharing Analysis(二)- 假设检验方法

    假设检验 假设检验是推论统计学(inferential statistics)的一个分支,也就是对一个较小的.有代表性的数据组(例如样本集合)进行分析与评估,并依此推断出一个大型的数据组(例如人口)的 ...