10-2-DBUtils工具
2021/11/29 23:36:05
本文主要是介绍10-2-DBUtils工具,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、介绍
为了更加简单地使用JDBC,Apache组织提供了一个DBUtils工具,它是操作数据库的一个组件,实现了对JDBC的简单封装,可以在不影响性能的情况下极大地简化JDBC的编码工作量。
DBUtils工具的核心是org.apache.commons.dbutils.QueryRunner类和org.apache.commons.dbutils.ResultSetHandler接口。
二、QueryRunner类
QueryRunner类简化了执行SQL语句的代码,它与ResultSetHandler组合在一起就能完成大部分的数据库操作,大大的减少了编码量。
QueryRunner类提供了带有一个参数的构造方法,该方法以javax.sql.DataSource作为参数传递到QueryRunner的构造方法中来获取Connection对象。
三、ResultSetHandler接口
ResultSetHandler接口用于处理ResultSet结果集,它可以将结果集中的数据转为不同的形式。根据结果集中数据类型的不同,ResultSetHandler提供了几种常见的实现类,具体如下: BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,并存放到List里。
ScalarHandler:将结果集中某一条记录的其中某一列的数据存储成Object对象。
如果上述实现类没有提供想要的功能,可以自定义一个类,实现ResultSetHandler接口的handle()方法。
四、ResultSetHandler实现类
4.1.在数据库jdbc中创建user表
use jdbc; create table `user` ( `id` int (11) primary key auto_increment, `name` varchar (120), `password` varchar (120) ); insert into `user` (`name`, `password`) values('zs','123456'); insert into `user` (`name`, `password`) values('lisi','123456'); insert into `user` (`name`, `password`) values('wangyu','123456');
4.2.导入commons-dbutils-1.6.jar并且需要上一章的JDBCUtils.java
4.3.创建BaseDao类
public class BaseDao { // 优化查询 public static Object query(String sql, ResultSetHandler<?> rsh, Object... params) throws SQLException { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { // 获得连接 conn = JDBCUtils.getConnection(); // 预编译sql pstmt = conn.prepareStatement(sql); // 将参数设置进去 for (int i = 0; params != null && i < params.length; i++) { pstmt.setObject(i + 1, params[i]); } // 发送sql rs = pstmt.executeQuery(); // 让调用者去实现对结果集的处理 Object obj = rsh.handle(rs); return obj; } catch (Exception e) { e.printStackTrace(); }finally { // 释放资源 JDBCUtils.release(rs, pstmt, conn); } return rs; } }
4.4.创建实体类User
public class User { private int id; private String name; private String password; //补充getter setter
4.5.创建测试类ResultSetTest1
public class ResultSetTest1 { public static void testBeanHandler() throws SQLException { BaseDao basedao = new BaseDao(); String sql = "select * from user where id=?"; User user = (User) basedao.query(sql, new BeanHandler(User.class), 1); System.out.print("id为1的User对象的name值为:" + user.getName()); } public static void main(String[] args) throws SQLException { testBeanHandler(); } }
4.6.ResultSetTest2
public class ResultSetTest2 { public static void testBeanListHandler() throws SQLException { BaseDao basedao = new BaseDao(); String sql = "select * from user "; ArrayList<User> list = (ArrayList<User>) basedao.query(sql, new BeanListHandler(User.class)); for (int i = 0; i < list.size(); i++) { System.out.println("第" + (i + 1) + "条数据的username值为:" + list.get(i).getName()); } } public static void main(String[] args) throws SQLException { testBeanListHandler(); } }
4.7.ResultSetTest3
public static void testScalarHandler() throws SQLException { BaseDao basedao = new BaseDao(); String sql = "select * from user where id=?"; Object arr = (Object) basedao.query(sql, new ScalarHandler("name"), 1); System.out.println(arr); } public static void main(String[] args) throws SQLException { testScalarHandler(); } }
【任务10-1】使用DBUtils实现增删改查
这篇关于10-2-DBUtils工具的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南