03015_DBUtils
1、概述
(1)如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils ;
(2)DBUtils就是JDBC的简化开发工具包。需要项目导入commons-dbutils-1.6.jar才能够正常使用DBUtils工具。
(3)commons-dbutils-1.6-bin.zip 链接:commons-dbutils-1.6-bin.zip 密码:r1z4 ;
(4)DBUtils是java编程中的数据库操作实用工具,小巧简单实用;
(5)DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码;
(6)Dbutils三个核心功能介绍:
①QueryRunner中提供对sql语句操作的API;
②ResultSetHandler接口,用于定义select操作后,怎样封装结果集;
③DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法。
2、QueryRunner核心类
(1)update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作;
(2)query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作。
3、QueryRunner实现添加、更新、删除操作
(1)update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作;
(2)添加
import java.sql.Connection;
import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; public class TestDBUtils {
public static void main(String[] args) {
try {
// 获取一个用来执行SQL语句的对象 QueryRunner
QueryRunner qr = new QueryRunner(); String sql = "INSERT INTO sort(sname) VALUES(?)";
Object[] params = { "电视机" };
Connection conn = JDBCUtils.getConnection();
int line = qr.update(conn, sql, params);// 用来完成表数据的增加、删除、更新操作
// 结果集处理
System.out.println("line = " + line); } catch (SQLException e) {
throw new RuntimeException(e);
} } }
(3)更新
import java.sql.Connection;
import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; public class TestDBUtils {
public static void main(String[] args) {
try {
// 获取一个用来执行SQL语句的对象 QueryRunner
QueryRunner qr = new QueryRunner(); String sql = "UPDATE sort set sid=sid+1 WHERE sname=?";
Object[] params = { "电视机" };
Connection conn = JDBCUtils.getConnection();
int line = qr.update(conn, sql, params);// 用来完成表数据的增加、删除、更新操作
// 结果集处理
System.out.println("line = " + line); } catch (SQLException e) {
throw new RuntimeException(e);
} } }
(4)删除
import java.sql.Connection;
import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; public class TestDBUtils {
public static void main(String[] args) {
try {
// 获取一个用来执行SQL语句的对象 QueryRunner
QueryRunner qr = new QueryRunner(); String sql = "DELETE FROM sort WHERE sname=?";
Object[] params = { "电视机" };
Connection conn = JDBCUtils.getConnection();
int line = qr.update(conn, sql, params);// 用来完成表数据的增加、删除、更新操作
// 结果集处理
System.out.println("line = " + line); } catch (SQLException e) {
throw new RuntimeException(e);
} } }
4、QueryRunner实现查询操作
(1)query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作;
(2)ResultSetHandler结果集处理类
  
(3)JavaBean
JavaBean就是一个类,在开发中常用封装数据。具有如下特性:
①需要实现接口:java.io.Serializable ,通常实现接口这步骤省略了,不会影响程序;
②提供私有字段:private 类型 字段名;
③提供getter/setter方法;
④提供无参构造。
 public class Sort {
     private int sid;
     private String sname;
     public Sort() {
         super();
     }
     public int getSid() {
         return sid;
     }
     public void setSid(int sid) {
         this.sid = sid;
     }
     public String getSname() {
         return sname;
     }
     public void setSname(String sname) {
         this.sname = sname;
     }
     @Override
     public String toString() {// 该方法可以省略
         return "Sort[sid=" + sid + ",sname=" + sname + "]";
     }
 }
(4)ArrayHandler与ArrayListHandler查询
①ArrayHandler:将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值。
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.junit.Test; public class ArrayHandlerDemo { @Test
public void method() {
try {
// 获取QueryRunner对象
QueryRunner qr = new QueryRunner();
// 执行SQL语句
String sql = "SELECT * FROM sort";
Object[] params = {};
Connection conn = JDBCUtils.getConnection();
Object[] objArray = qr.query(conn, sql, new ArrayHandler(), params);
// 结果集的处理
System.out.println(Arrays.toString(objArray)); conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
1024x768
运行结果:
  
  
②ArrayListHandler:将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.junit.Test; public class ArrayListHandlerDemo {
@Test
public void method() {
try {
// 获取QueryRunner对象
QueryRunner qr = new QueryRunner();
// 执行SQL语句
String sql = "SELECT * FROM sort WHERE sid>?";
Object[] params = { 4 };
Connection conn = JDBCUtils.getConnection();
List<Object[]> list = qr.query(conn, sql, new ArrayListHandler(),
params);
// 结果集的处理
for (Object[] objArray : list) {
System.out.println(Arrays.toString(objArray));
} conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
运行结果:
  
  
(5)BeanHandler与BeanListHandler查询
①BeanHandler:将结果集中第一条记录封装到一个指定的javaBean中。
import java.sql.Connection;
import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler; public class BeanHandlerDemo {
public static void main(String[] args) { try {
// 获取QueryRunner
QueryRunner qr = new QueryRunner();
// 执行SQL语句
String sql = "SELECT * FROM sort WHERE sname=?";
Object[] params = { "冰箱" };
Connection conn = JDBCUtils.getConnection();
Sort s = qr.query(conn, sql, new BeanHandler<Sort>(Sort.class),
params);
// 结果集处理
System.out.println(s); conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
} }
}
运行结果:
  
  
②BeanListHandler:将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中。
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.Test; public class BeanListHandlerDemo {
@Test
public void method() {
try {
// 获取QueryRunner
QueryRunner qr = new QueryRunner();
// 执行SQL语句
String sql = "SELECT * FROM Sort WHERE sid>?";
Object[] params = { 4 };
Connection conn = JDBCUtils.getConnection();
List<Sort> list = qr.query(conn, sql, new BeanListHandler<Sort>(
Sort.class), params);
// 结果集处理
for (Sort s : list) {
System.out.println(s);
} conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
运行结果:
  
  
温馨提示:使用DBUtils查询数据,如果使用ArrayListHandler等都能够返回正确值,<br>但使用BeanListHandler 和 BeanHandler则一直返回null,请检查保证实体类的属性名称必须要同数据库中的字段一模一样(区分大小写)。
(6)ColumnListHandler与ScalarHandler查询
①ColumnListHandler:将结果集中指定的列的字段值,封装到一个List集合中。
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.junit.Test; public class ColumnListHandlerDemo {
@Test
public void method() {
try {
// 获取QueryRunner对象
QueryRunner qr = new QueryRunner();
// 执行SQL语句
String sql = "SELECT sname FROM Sort WHERE sid>?";
Object[] params = { 4 };
Connection conn = JDBCUtils.getConnection();
List<String> list = qr.query(conn, sql,
new ColumnListHandler<String>(), params);
// 结果集的处理
for (String str : list) {
System.out.println(str);
} conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
运行结果:
  
  
②ScalarHandler:它是用于单数据。例如select count(*) from 表操作。
import java.sql.Connection;
import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test; public class ScalarHandlerDemo {
@Test
public void method() {
try {
// 获取QueryRunner对象
QueryRunner qr = new QueryRunner(); // 执行SQL语句
String sql = "SELECT MAX(sid) FROM Sort";
Object[] params = {};
Connection conn = JDBCUtils.getConnection();
Integer max = qr.query(conn, sql, new ScalarHandler<Integer>(),
params);
// 结果集的处理
System.out.println("max=" + max); conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
运行结果:
  
  
Normal
  0
7.8 磅
  0
  2
false
  false
  false
EN-US
  ZH-CN
  X-NONE
/* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:普通表格;
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.5pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:宋体;
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-font-kerning:1.0pt;}
03015_DBUtils的更多相关文章
随机推荐
- HDU 4081 Qin Shi Huang's National Road System 最小生成树
			
点击打开链接题目链接 Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
 - Linux下查询CPU 缓存的工具
			
在Linux下能够使用例如以下工具查询CPU缓存: 方式1: $ lscpu L1d cache: 32K <span style="white-space:pre"> ...
 - iPad iOS8.0升级和Xcode 6.0.1公布了,附Xcode 6.0.1下载地址
			
今天上午把iPad mini升级到了iOS 8.0,升级提示须要6.7G空间,无奈仅仅好把一些大的App删掉腾冲空间,然后開始升级,3小时后最终升级成功了. 下午试着把我们的App通过xcode 5 ...
 - js中如何获取对象的长度和名称
			
js如何获取对象长度和名称 一.总结 一句话总结:对象的长度不能用.length获取,用js原生的Object.keys可以获取到 var obj = {'name' : 'Tom' , 'sex' ...
 - matplotlib 可视化 —— 移动坐标轴(中心位置)
			
通常软件绘图,包括 matlab.python 的 matplotlib,默认都是将坐标轴置于画布(figure)的最下侧(x 轴),最左侧(y 轴),也即将坐标原点置于左下角.而我们自己理解数学,以 ...
 - TYVJ 1340 折半暴搜+二分
			
思路: 1. 这 题 不卡常过不去啊-- (先加一个random_shuffle) 首先 我们可以折半 搜这一半可以到达的重量 sort一遍 然后搜另一半 对于路程中每一个解 我们可以二分前一半中加这 ...
 - AngularJs轻松入门(二)数据绑定
			
数据绑定是AngularJs中非常重要的特性,我们看一下下面的例子: <!DOCTYPE html> <html ng-app> <head lang="en& ...
 - 解决VMware Pro 14安装Linux镜像时黑屏问题
			
软件及版本: VMware-workstation-full-14.0.0-6661328 CentOS-6.8-x86_64-bin-DVD1 系统: win10 问题: 启动虚拟机,配置完cent ...
 - 51Nod 1433 0和5(数论)
			
小K手中有n张牌,每张牌上有一个一位数的数,这个字数不是0就是5.小K从这些牌在抽出任意张(不能抽0张),排成一行这样就组成了一个数.使得这个数尽可能大,而且可以被90整除. 注意: 1.这个数没有前 ...
 - SSD-实现
			
一.制作voc数据集 1.数据集文件夹 新建一个文件夹,用来存放整个数据集,或者和voc2007一样的名字:VOC2007 然后像voc2007一样,在文件夹里面新建如下文件夹: 2.将训练图片放到J ...