如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,我们采用apache commons组件一个成员:DBUtils。
DBUtils就是JDBC的简化开发工具包。需要项目导入commons-dbutils-1.6.jar才能够正常使用DBUtils工具。
1.概述;
DBUtils是java编程中的数据库操作实用工具,小巧简单实用。
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
Dbutils三个核心功能介绍
2.QueryRunner核心类
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import cn.hpu.utils.JDBCUtilsConfig;
import cn.hpu.utils.JDBCUtilsDataSourceConfig;
/**
* 利用 Apache commons组件 dbutils 简化 jdbc 开发 ;
* DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
* Dbutils三个核心功能介绍:
* QueryRunner中提供对SQL语句操作的API.
* ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
* DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法
* @author zhou'en'xian
*
*/
public class JDBCUtilsLearn {
private static Connection con=JDBCUtilsConfig.getConnection();
private static QueryRunner que=new QueryRunner();
//private static QueryRunner que=new QueryRunner(JDBCUtilsDataSourceConfig.getDataSource());
public static void main(String[] args) throws SQLException {
// insert();
// update();
// delete();
// selectArrayHandler();
// selectArrayListHander();
selectBeanHandler();
// selectBeanListHandler();
// selectColumnListHandler();
// selectScalarHandler();
// selectMapHandler();
// selectMapListHandler();
}
/**
* QueryRunner核心类
* update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、
* 删除、更新操作。
* query(Connection conn, String sql, ResultSetHandler rsh, Object... params) ,
* 用来完成表数据的查询操作
* */
/**
* 1.利用QueryRunner实现添加、更新、删除操作
* @throws SQLException
*/
//@添加操作
public static void insert() throws SQLException {
String sql="insert into zhangwu (name,money) values (?,?)";
Object params[]= {"学习用品",236};
que.update(con, sql, params);
con.close();
};
//@更新操作
public static void update() {
String sql=" update zhangwu set money=money+100 where name=?";
Object params[]= {"美容服饰"};
try {
que.update(con, sql, params);
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
};
//@删除操作
public static void delete() {
String sql="delete from zhangwu where name=?";
Object params[]= {"未知"};
try {
que.update(con, sql, params);
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
};
/**
* 2.利用QueryRunner实现查询操作
* query(Connection conn, String sql, ResultSetHandler rsh, Object... params)
* ResultSetHandler(它是一个接口)结果集处理类;其八种实现类如下:
*
* 1:ArrayHandler:将结果集中的第一条记录封装到一个Object[]数组中
* 数组中的每一个元素就是这条记录中的每一个字段的值
* 2.ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,
* 将这些数组在封装到List集合中。
* 3.BeanHandler:将结果集中第一条记录封装到一个指定的javaBean中。
* 4。BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,
* 将这些javaBean在封装到List集合中。
* 5.ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中
* 6.ScalarHandler 它是用于单数据。例如select count(*) from 表操作。
* 7.MapHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
* 8.MapListHandler 将结果集每一行封装到Map集合中,Key 列名, Value 该列数据,
* Map集合存储到List集合
*/
//@ArrayHander 查询
public static void selectArrayHandler() {
String sql="select * from zhangwu";
try {
Object obj[]=que.query(con, sql, new ArrayHandler());
for(int i=0;i list=que.query(con, sql, new ArrayListHandler());
for(Object[]obj:list) {
for(int i=0;i(zhangWu.class),parpams);
System.out.println(bean);
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
};
public static void selectBeanListHandler() {
String sql="select * from zhangwu";
try {
List list= que.query(con,sql, new BeanListHandler(zhangWu.class));
for(zhangWu i:list) {
System.out.println(i);
};
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
};
public static void selectColumnListHandler() {
String sql="select * from zhangwu where id>?";
Object []params= {9};
try {
List