DBUtils
DBUtils就是JDBC的简化开发工具包,是为了简化代码提高效率,减少冗余而存在的,而且封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
Dbutils三个核心功能介绍
1)QueryRunner中提供对sql语句操作的API.
2)ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
3)DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法
1.1 QueryRunner核心类
l update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作
l query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作
1.2 QueryRunner实现添加、更新、删除操作
l update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作
//数据新增操作
public void add() throws SQLException{
//创建QuerryRunner对象
QueryRunner qr=new QueryRunner(MyDBUTils.getDataSource());
String sql="insert into sort(sname,sdesc) values(?,?)";
//执行
int row=qr.update(sql,"插排","通电用的");
System.out.println(row);
}
//数据修改操作
public void update() throws SQLException{
//创建QuerryRunner对象
QueryRunner qr=new QueryRunner(MyDBUTils.getDataSource());
String sql="update sort set sname=? where sid=?";
//执行
int row=qr.update(sql,"牛奶","11");
System.out.println(row);
}
//数据删除操作
public void delete() throws SQLException{
//创建QuerryRunner对象
QueryRunner qr=new QueryRunner(MyDBUTils.getDataSource());
String sql="delete from sort where sid=?";
//执行
int row=qr.update(sql,"16");
System.out.println(row);
}
1.3 QueryRunner实现查询操作
l query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params),用来完成表数据的查询操作
ResultSetHandler结果集处理类
ArrayHandler |
将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值 |
ArrayListHandler |
将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。 |
BeanHandler |
将结果集中第一条记录封装到一个指定的javaBean中。 |
BeanListHandler |
将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中 |
ColumnListHandler |
将结果集中指定的列的字段值,封装到一个List集合中 |
ScalarHandler |
它是用于单数据。例如select count(*) from 表操作。 |
MapHandler |
将结果集第一行封装到Map<String,Object>集合中,Key 列名, Value 该列数据 |
MapListHandler |
将结果集每一行封装到List<Map<String,Object>>集合中,Key 列名, Value 该列数据,Map集合存储到List集合 |
ArrayHandler与ArrayListHandler查询
ArrayHandler:将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
//ArrayHandler
public void get1() throws SQLException{
QueryRunner qr=new QueryRunner(MyDBUTils.getDataSource());
String sql="select * from sort";
Object[] obj=qr.query(sql,new ArrayHandler());
for(Object o:obj){
System.out.print(o+"");
}
System.out.println();
}
ArrayListHandler:将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
//ArrayListHandler
public void get2() throws SQLException{
QueryRunner qr=new QueryRunner(MyDBUTils.getDataSource());
String sql="select * from sort";
List<Object[]> list=qr.query(sql, new ArrayListHandler());
for(Object[] objs:list){
for(Object obj:objs){
System.out.print(obj+" ");
}
System.out.println();
}
}
BeanHandler与BeanListHandler查询
l BeanHandler :将结果集中第一条记录封装到一个指定的javaBean中。
//BeanHandler
public void get3() throws SQLException{
QueryRunner qr=new QueryRunner(MyDBUTils.getDataSource());
String sql="select * from sort";
Sort sort=qr.query(sql, new BeanHandler<Sort>(Sort.class));
System.out.println(sort);
}
l BeanListHandler :将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
//BeanListHandler
public void get4() throws SQLException{
QueryRunner qr=new QueryRunner(MyDBUTils.getDataSource());
String sql="select * from sort";
List<Sort> list=qr.query(sql, new BeanListHandler<Sort>(Sort.class));
System.out.println(list);
}
ColumnListHandler与ScalarHandler查询
l ColumnListHandler:将结果集中指定的列的字段值,封装到一个List集合中
//ColumnListHandler
public void get5() throws SQLException{
QueryRunner qr=new QueryRunner(MyDBUTils.getDataSource());
String sql="select sname from sort";
List<String> list=qr.query(sql, new ColumnListHandler<String>());
System.out.println(list);
}
//ColumnListHandler
public void get6() throws SQLException{
QueryRunner qr=new QueryRunner(MyDBUTils.getDataSource());
String sql="select * from sort";
List<String> list=qr.query(sql, new ColumnListHandler<String>("sname"));//重载的构造方法
System.out.println(list);
}
l ScalarHandler:它是用于单数据。例如select count(*) from 表操作。
//ScalarHandler public void get7() throws SQLException{ QueryRunner qr=new QueryRunner(MyDBUTils.getDataSource()); String sql="select count(*) from sort"; Long count=qr.query(sql, new ScalarHandler<Long>()); System.out.println(count.intValue()); }