一.什么是DbUtils組件
Commons DbUtils是Apache組織提供的一個對JDBC進行簡單封裝的開源工具類庫,使用它能夠簡化JDBC應用程序的開發,同時也不會影響程序的性能。
下載組件,引入jar文件:commons-dbutils-1.6.jar 密碼:tygh
maven環境配置:
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.6</version>
</dependency>
二.核心類QueryRunner
帶有Connection的
Int update(Connection conn, String sql, Object param);
執行更新帶一個占位符的sql
Int update(Connection conn, String sql, Object… param);
執行更新帶多個占位符的sql
Int[] batch(Connection conn, String sql, Object[][] params)
批處理
T query(Connection conn ,String sql, ResultSetHandler<T> rsh, Object... params)
查詢方法
不帶有Connection的
Int update( String sql, Object param);
執行更新帶一個占位符的sql
Int update( String sql, Object… param);
執行更新帶多個占位符的sql
Int[] batch( String sql, Object[][] params);
批處理
注意: 如果調用DbUtils組件的操作數據庫方法,沒有傳入連接對象,那么在實例化QueryRunner對象的時候需要傳入數據源對象: QueryRunner qr = new QueryRunner(DataSource ds);
1.更新操作(包括delete 、insert、 update)
例1:
@Test
public void delete() throws Exception {
String sql = " delete from car where id =? ";
conn = ConnUtil.getConnextion();
// 創建DbUtils核心工具類對象
QueryRunner qr = new QueryRunner();
qr.update(conn, sql, 3);
DbUtils.close(conn);
}
結果測試
例2:
public void save(CarBean carBean)throws Exception {
String sql = "INSERT INTO car (carname,carEntity) VALUES(?,?); " ;
conn = ConnUtil.getConnextion();
QueryRunner qr = new QueryRunner();
// 批量插入
qr.batch(conn, sql, new Object[][]{ {"寶馬","2017"},{"奔馳","2017"} });
// 關閉
conn.close();
}
image.png
2.查詢操作
DbUtils提供的封裝結果的一些對象:
1)BeanHandler: 查詢返回單個對象
2) BeanListHandler: 查詢返回list集合,集合元素是指定的對象
- ArrayHandler, 查詢返回結果記錄的第一行,封裝對對象數組, 即返回:Object[]
- ArrayListHandler, 把查詢的每一行都封裝為對象數組,再添加到list集合中
- ScalarHandler 查詢返回結果記錄的第一行的第一列 (在聚合函數統計的時候用)
- MapHandler 查詢返回結果的第一條記錄封裝為map
- MapListHandler 查詢返回結果封裝為List<map>
-
a.自定義結果集封裝數據
@Test
public void carFind() throws Exception {
String sql = " select * from car where id = ? ";
conn = ConnUtil.getConnextion();
QueryRunner qr = new QueryRunner();
//查詢
CarBean carBean= qr.query(conn, sql, new ResultSetHandler<CarBean>() {
//自定義 如何封裝一個CarBean對象
public CarBean handle(ResultSet resultSet) throws SQLException {
if(resultSet.next()) {
CarBean carBean = new CarBean();
carBean.setId(resultSet.getInt("id"));
carBean.setCarname(resultSet.getString("carname"));
carBean.setCarname(resultSet.getString("carEntity"));
return carBean;
}
return null;
}
},1);
System.out.println(carBean.getId()+""+carBean.getCarname()+""+carBean.getCarEntity());
}
-
b.查詢使用組件提供的BeanHandler結果集對象封裝數據
@Test
public void carFind() throws Exception {
String sql = " select * from car where id = ? ";
conn = ConnUtil.getConnextion();
QueryRunner qr = new QueryRunner();
//查詢
CarBean carBean = qr.query(conn,sql,new BeanHandler<CarBean>(CarBean.class),2);
System.out.println(carBean.getId()+" "+carBean.getCarname()+" "+carBean.getCarEntity());
conn.close();
}
-
c.查詢使用組件提供的BeanListHandler結果集對象封裝數據
@Test
public void carFind() throws Exception {
String sql = " select * from car where id = ? ";
conn = ConnUtil.getConnextion();
QueryRunner qr = new QueryRunner();
//查詢
List <CarBean> carBean = qr.query(conn,sql,new BeanListHandler<CarBean>(CarBean.class),4);
System.out.println(carBean.get(0).getId()+" "+carBean.get(0).getCarname()+" "+carBean.get(0).getCarEntity());
conn.close();
}
-
d.查詢使用組件提供的MapHandler 結果集對象封裝數據
@Test
public void carFind() throws Exception {
String sql = " select * from car";
conn = ConnUtil.getConnextion();
QueryRunner qr = new QueryRunner();
//查詢
Map<String,Object> carBean = qr.query(conn,sql,new MapHandler());
System.out.println(carBean);
conn.close();
}
image.png
-
e.查詢使用組件提供的ScalarHandler 結果集對象封裝數據(在聚合函數統計時候用)
@Test
public void carFind() throws Exception {
String sql = " select count(*) from car";
conn = ConnUtil.getConnextion();
QueryRunner qr = new QueryRunner();
//查詢
Long carBean = qr.query(conn,sql,new ScalarHandler<Long>());
System.out.println(carBean);
conn.close();
}