这个网址我看过之后 觉得有很详细的理解:
希望能够帮助到大家:https://www.cnblogs.com/CQY1183344265/p/5854418.html
加油哦~
简介:
一:Dbutils是什么?(当我们很难理解一个东西的官方解释的时候,就让我们记住它的作用)
Dbutils:主要是封装了JDBC的代码,简化dao层的操作。
作用:帮助java程序员,开发Dao层代码的简单框架。
框架的作用:帮助程序员,提高程序的开发效率。
二:为什么需要Dbutils ?
在使用Dbutils 之前,我们Dao层使用的技术是JDBC,那么分析一下JDBC的弊端:
(1)数据库链接对象、sql语句操作对象,封装结果集对象,这三大对象会重复定义
(2)封装数据的代码重复,而且操作复杂,代码量大
(3)释放资源的代码重复
结果:(1)程序员在开发的时候,有大量的重复劳动。(2)开发的周期长,效率低
三:Dbutils三个核心类介绍:
1:DbUtils:连接数据库对象----jdbc辅助方法的集合类,线程安全
构造方法:DbUtils()
作用:控制连接,控制书屋,控制驱动加载额一个类。
2:QueryRunner:SQL语句的操作对象,可以设置查询结果集的封装策略,线程安全。
构造方法:
(1)QueryRunner():创建一个与数据库无关的QueryRunner对象,后期再操作数据库的会后,需要手动给一个Connection对象,它可以手动控制事务。
Connection.setAutoCommit(false);设置手动管理事务
Connection.commit(); 提交事务
(2)QueryRunner(DataSource ds):创建一个与数据库关联的queryRunner对象,后期再操作数据库的时候,不需要Connection对象,自动管理事务。
DataSource:数据库连接池对象。
四:Dbutils快速入门
使用Dbutils注意事项:
需要导入的jar包:
①MySql驱动
②c3p0包
③DbUtils包
(2)添加c3p0配置文件
(3)可以自行添加一个JDBCUtils工具类:用来获取c3p0连接池对象
c3p0-config.xml
<? xml version ="1.0" encoding= "UTF-8" ?>
代码对比
使用DBUtils
/**
* 添加用户
* @param user 待添加的用户
* @return 成功添加的用户
*/
public static int add(User user){
Connection conn= DButilC3P0.getConnection();
String sql="insert into user values(?,?,?,?,?)";
QueryRunner qr=new QueryRunner();
Object []params ={user.getCardId(),user.getPassword(),user.getName(),user.getPhone(),user.getSex()};
try {
return qr.update(conn,sql,params);//受影响的行数
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
没有使用DBUtils
public static int add(User user){
Connection conn= DButilC3P0.getConnection();
String sql="insert into user values(?,?,?,?,?)";
try {
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1,user.getCardId());
ps.setString(2, user.getPassword());
ps.setString(3, user.getName());
ps.setString(4, user.getPhone());
ps.setByte(5, user.getSex());
return ps.executeUpdate();//执行语句
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}