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工具的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-08如何用关键链方法突破项目管理瓶颈?
- 2025-01-08电商人必看!6 款提升团队协作与客户满意度软件!
- 2025-01-08电商团队管理混乱?快用这 6 款软件优化协作流程!
- 2025-01-08短剧制作效率低?试试这5款任务管理工具
- 2025-01-08高效应对电商高峰,6 款团队协作软件大揭秘!
- 2025-01-08为什么外贸人都爱上了在线协作工具?
- 2025-01-08提升工作效率,从这些任务管理工具开始
- 2025-01-08新年电商订单暴增,必备的 6 款可视化协作办公软件有哪些?
- 2025-01-08短剧制作经理必备技能与工具全解析
- 2025-01-08在线协作让年货大促轻松应对!