DBUtils如何使用
一、准备
1.关于“Eclipse”
(1)下载DBUtils
http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi
(2)下载后选择相应的路径进行解压
如:
(3)在Eclipse中进行路径配置
(i)新建项目:
打开Eclispe->文件->新建->java 项目->取名“DBUtils”->点击完成
(ii)导入“DBUtils”
在项目名称(DBUtils)后右击,选择“构建路径”,然后点击“配置构建路径”
找到之前下载的“DBUtils”,选择其路径
点击“打开”,出现下面的结果
点击下方的“应用并关闭”,最终可在项目中的“引用的库”,看到刚刚导入的“DBUtils”,如下图所示
(iii)在该项目(DBUtils)下,新建一个类(Test1)
2.连接数据库(Eclipse连接MySQL)(操作与 1.类似)
(1)下载
https://dev.mysql.com/downloads/connector/j/
(2)导入“mysql-connector-java-8.0.21.jar"
3.关于“MySQL”
(1)打开“MySQL Workbench 8.0 CE”,新建一个“DB”的数据库,点击“ok”
点击“DB”,输入密码(安装时自己设定的)
(2)创建数据库
(i)在左下角schema下方区域鼠标右键选择create schema,即可创建数据库
命名为“Student”
(ii)点击“Apply”
再次点击“Apply”,出现“student”数据库
(3)建立表
表格命名为“me”,创建“ID”,“NAME”,“AGE”信息
点击“Apply”
再次点击“Apply”
点击finsh
(4)初始化表
点击下图红色部分
输入插入语句
insert into me values(101,‘章叁’,18);
二、初步测试“连接数据库”
1.代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Test1 {
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 = "123456";
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 me"); // me 为表的名称
while (rs.next()) {
System.out.print(rs.getInt("ID"));
System.out.println(rs.getString("NAME"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.结果:
三、DBUtils的类
1.QueryRunner
Dbutils的核心类之一,它显著的简化了SQL查询
它的方法有:
update(Connection conn, String sql, Object[] params):被用来执行插入、更新或删除(DML)操作。
2.查询
(1)ArrayHandler
将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
(2)ArrayListHandler
将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
(3)BeanHandler
将结果集中第一条记录封装到一个指定的javaBean中。
(4)BeanListHandler
将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
(5)ColumnListHandler
将结果集中指定的列的字段值,封装到一个List集合中
四、DButils使用
1.代码(对数据进行插入、更新、删除、查找)
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 Test1 {
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 me(ID,NAME,AGE)values(102,'齐思',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 me set NAME='章叁2'where ID=101";
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 me where ID=103";
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 ID,NAME from me where AGE = ?";
//注意sql语句中的筛选项(username,password)一定要包括下列list中的参数项(username)
Object [] param = {18};
List<Object> list = qr.query(con,sql,new ColumnListHandler<Object>("NAME"),param);
//若没有查询到则list.size()=0
for (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 = "123456";
Connection conn = null;
try {
Class.forName(driverClassName);
conn = DriverManager.getConnection(url, userName, password);
System.out.println("\n获取数据库连接成功!");
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
}
2.结果: