目录
- 一、DBUtils介绍
- 二、DBUtils使用
- (一)导入相关Jar包
- (二)使用DBUtils完成数据库操作
一、DBUtils介绍
DBUtils:是为了简化JDBC的快发而产生的开发工具包,是对JDBC的一种封装。
DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean。
在使用DBUtils之前,应该注意一些问题:
1、DBUtils是JDBC的简单封装,可以和JDBC混合使用。
2、DBUtils对结果集自动封装为JavaBean是有着苛刻要求的:必须满足JavaBean的规范,其次Bean的getter与setter方法的名字与结果集的列名一一对应,而不要求JavaBean的私有成员与表结果集列名一一对应。
3、DBUtils可以将结果集封装为各种类型,主要有:Bean/List,Map/List
二、DBUtils使用
(一)导入相关Jar包
创建工程 day1_jdbc,导入相关jar包,然后 add to build path(文末有jar包下载地址)。
(二)使用DBUtils完成数据库操作
- 加载驱动
- 获取连接
- 获得执行sql语句的对象
- 处理得到的数据集
- 释放资源
1. 首先需要进行初步测试 “连接数据库”,代码如下:
package day1_jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class Test01 {public static void main(String args[]) {String driverClassName = "com.mysql.cj.jdbc.Driver";String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";String userName = "root";String password = "068835";Connection conn = null;try {Class.forName(driverClassName); conn = DriverManager.getConnection(url, userName, password);System.out.println("获取数据库连接成功!");Statement st = conn.createStatement();ResultSet rs = st.executeQuery("select * from mine"); // mine 为表的名称while (rs.next()) {System.out.print(rs.getInt("Sno"));System.out.print(rs.getString("Sname"));System.out.print(rs.getInt("Sage"));System.out.println();}} catch (Exception e) {e.printStackTrace();}}
}
结果如下图所示:
2. DBUtils的类
(1) QueryRunner
Dbutils的核心类之一,它显著的简化了SQL查询。
它的方法有:
update(Connection conn, String sql, Object[] params):被用来执行插入、更新或删除(DML)操作。
(2) 查询
① ArrayHandler
将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值。
② ArrayListHandler
将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
③ BeanHandler
将结果集中第一条记录封装到一个指定的javaBean中。
④ BeanListHandler
将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中。
⑤ ColumnListHandler
将结果集中指定的列的字段值,封装到一个List集合中。
3. 使用(对数据进行插入、更新、删除、查找等操作)
代码如下:
package day1_jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;public class Test02 {public static void main(String args[]) {insert();//插入\update();//更新delete();//删除select();//查找}public static void insert() {Connection conn = connectDB(); // 获取数据库连接QueryRunner runner = new QueryRunner();//QueryRunner是DBUtils的核心类之一,它显著的简化了SQL查询String sql = "insert into mine(Sno,Sname,Sage) values(1800004,'刘二',18)";int num;try {num = runner.update(conn,sql);System.out.println("插入了" + num + "组数据");} catch(SQLException e) {e.printStackTrace();}DbUtils.closeQuietly(conn); // 关闭数据库连接}public static void update() {Connection con = connectDB();QueryRunner runner = new QueryRunner();String sql = "update mine set Sname = '王五1' where Sno = 1800000";try {int num = runner.update(con,sql);System.out.println("更新了" + num + "组数据");} catch(SQLException e) {e.printStackTrace();}DbUtils.closeQuietly(con); // 关闭数据库连接}public static void delete() {Connection con = connectDB();QueryRunner runner = new QueryRunner();String sql = "delete from mine where Sno = 1800005";try {int num = runner.update(con,sql);System.out.println("删除了" + num + "组数据");} catch(SQLException e) {System.out.println("无法找到该组数据,删除失败");}DbUtils.closeQuietly(con); // 关闭数据库连接}public static void select() {Connection con = connectDB();try {QueryRunner qr = new QueryRunner();String sql = "select Sno,Sname from mine where Sage = ? ";//注意sql语句中的筛选项(username,password)一定要包括下列list中的参数项(username)Object [] param = {18};List<Object> list = qr.query(con,sql,new ColumnListHandler<Object>("Sname"),param);//若没有查询到则list.size()=0for (Object o : list) {System.out.println(o + "\t");}} catch(Exception e) {e.printStackTrace();} DbUtils.closeQuietly(con);}public static Connection connectDB() { String driverClassName = "com.mysql.cj.jdbc.Driver";String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";String userName = "root";String password = "068835";Connection conn = null;try {Class.forName(driverClassName); conn = DriverManager.getConnection(url, userName, password);System.out.println("\n获取数据库连接成功!");} catch (Exception e) {e.printStackTrace();}return conn;}
}
结果如图:
以上就是我对DBUtils介绍与使用的理解,如有不对地方恳请指正。
[注]
commons-dbutils-1.7.jar下载地址:link1.
mysql-connector-java-8.0.21.jar下载地址:link2.