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