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. LeetCode 680. Valid Palindrome II 验证回文字符串 Ⅱ(C++/Java)

    题目: Given a non-empty string s, you may delete at most one character. Judge whether you can make it ...

  2. 谁说.net core不好动态访问webservice?看这篇文章,C#快速实现动态访问webservice,兼容.net framework和.net core+

    前言:访问webservice,大多数人都是用服务引用的方式,但是这种方式比较麻烦,例如遇到服务更新了,你还需要手动更新你的服务引用,再重新发布,很麻烦.或者已有的一些例子,至少我看到的很多案例,动态 ...

  3. EF EntityFramework 强制从数据库中取数据,而不是上下文

    场景:插入了一条数据到数据库,这条数据会有其它程序修改,接着程序想获取最新数据.此时不加额外处理,取的仍是旧的. t_task ta = new t_task(); ta.item_id = item ...

  4. Kubernetes监控手册03-宿主监控实操

    生产环境大都是在 Linux 下的,所以这篇文章我们先来分享如何使用 Categraf 采集 Linux OS 相关的指标.读完本篇内容,你应该可以完成机器层面的监控了. 原理概述 Categraf ...

  5. 比较 SpringSecurity 和 Shiro

    相比 Spring Security, Shiro 在保持强大功能的同时,使用简单性和灵活性. SpringSecurity: 即使是一个一个简单的请求, 最少得经过它的 8 个Filter.Spri ...

  6. 用 KV 缓存量化解锁长文本生成

    很高兴和大家分享 Hugging Face 的一项新功能: KV 缓存量化 ,它能够把你的语言模型的速度提升到一个新水平. 太长不看版: KV 缓存量化可在最小化对生成质量的影响的条件下,减少 LLM ...

  7. spring项目中读取resources下的文件

    spring项目中读取resources下的文件 我们都知道,spring项目经过maven打包后,可以打成jar包或可解压的war包 a. war包是需要外置的web容器去运行的,是需要先解压的 b ...

  8. SHOW PROCESSLIST 最多能显示多长的 SQL?

    在 MySQL 中,如果我们想查看实例当前正在执行的 SQL,常用的命令是SHOW PROCESSLIST. 但如果 SQL 过长的话,就会被截断.这时,我们一般会用SHOW FULL PROCESS ...

  9. k8s集群搭建及对一些组件的简单理解(二)

    背景 前面写了一篇,k8s集群搭建及对一些组件的简单理解(一),主要讲了下背景和对一些组件的理解. 今天讲一下正式的安装,有网环境的,后续再说下无外网环境纯内网的. k8s集群节点.组件 控制面节点, ...

  10. cv2 判断图片是冷还是暖

    把图片的颜色空间转为HSV H表示色调(下图横轴), 图片的平均H值可用于区分冷暖