[TOC]
# 簡介
DBUtils是java編程中的數據庫操作實用工具,小巧簡單實用。
DBUtils封裝了對JDBC的操作,簡化了JDBC操作,可以少寫代碼。
Dbutils三個核心功能介紹
* QueryRunner中提供對sql語句操作的API.
* ResultSetHandler接口,用于定義select操作后,怎樣封裝結果集.
* DbUtils類,它就是一個工具類,定義了關閉資源與事務處理的方法
# QueryRunner核心類
## 方法
* update(Connection conn, String sql, Object... params) ,用來完成表數據的增加、刪除、更新操作
* query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用來完成表數據的查詢操作
## 添加、更新、刪除操作
* update(Connection conn, String sql, Object... params) ,用來完成表數據的增加、刪除、更新操作
* 添加
~~~
public void insert(){
try {
//獲取一個用來執行SQL語句的對象 QueryRunner
QueryRunner qr = new QueryRunner();
String sql = "INSERT INTO zhangwu(name,money,parent) VALUES(?,?,?)";
Object[] params = {"股票收入", 5500, "收入"};
//JDBCUtils是自己封裝的連接類,上一章節有
Connection conn = JDBCUtils.getConnection();
int line = qr.update(conn,sql,params);// 用來完成表數據的增加、刪除、更新操作
//結果集處理
System.out.println("line = " + line);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
~~~
* 更新
~~~
public void update(){
try {
//創建一個QueryRunner對象,用來完成SQL語句的執行
QueryRunner qr = new QueryRunner();
//執行SQL語句
String sql = "UPDATE zhangwu SET money = money+1000 WHERE name=?";
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);
}
}
~~~
## 查詢
* query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用來完成表數據的查詢操作
### ResultSetHandler結果集處理類




### JavaBean
JavaBean就是一個類,在開發中常用封裝數據。具有如下特性
1. 需要實現接口:java.io.Serializable ,通常實現接口這步驟省略了,不會影響程序。
2. 提供私有字段:private 類型 字段名;
3. 提供getter/setter方法:
4. 提供無參構造
### ArrayHandler與ArrayListHandler查詢
* ArrayHandler:將結果集中的第一條記錄封裝到一個Object[]數組中,數組中的每一個元素就是這條記錄中的每一個字段的值
~~~
try {
//獲取QueryRunner對象
QueryRunner qr = new QueryRunner();
//執行SQL語句
String sql = "SELECT * FROM zhangwu";
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();
}
~~~
* ArrayListHandler:將結果集中的每一條記錄都封裝到一個Object[]數組中,將這些數組在封裝到List集合中。
~~~
try {
//獲取QueryRunner對象
QueryRunner qr = new QueryRunner();
//執行SQL語句
String sql = "SELECT * FROM zhangwu WHERE money>?";
Object[] params = {2000};
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();
}
}
~~~
### BeanHandler與BeanListHandler查詢
* BeanHandler :將結果集中第一條記錄封裝到一個指定的javaBean中。
~~~
try{
//獲取QueryRunner
QueryRunner qr = new QueryRunner();
//執行SQL語句
String sql = "SELECT * FROM zhangwu WHERE id=?";
Object[] params = {1};
Connection conn = JDBCUtils.getConnection();
ZhangWu zw = qr.query(conn, sql, new BeanHandler<ZhangWu>(ZhangWu.class), params);
//結果集處理
System.out.println(zw);
conn.close();
} catch(SQLException e){
throw new RuntimeException(e);
}
~~~
* BeanListHandler :將結果集中每一條記錄封裝到指定的javaBean中,將這些javaBean在封裝到List集合中
~~~
try{
//獲取QueryRunner
QueryRunner qr = new QueryRunner();
//執行SQL語句
String sql = "SELECT * FROM zhangwu WHERE money>?";
Object[] params = {2000};
Connection conn = JDBCUtils.getConnection();
List<ZhangWu> list = qr.query(conn, sql, new BeanListHandler<ZhangWu>(ZhangWu.class), params);
//結果集處理
for (ZhangWu zw : list) {
System.out.println(zw);
}
conn.close();
} catch(SQLException e){
throw new RuntimeException(e);
}
~~~
### ColumnListHandler與ScalarHandler查詢
* ColumnListHandler:將結果集中指定的列的字段值,封裝到一個List集合中
~~~
try {
//獲取QueryRunner對象
QueryRunner qr = new QueryRunner();
//執行SQL語句
String sql = "SELECT name FROM zhangwu WHERE money>?";
Object[] params = {2000};
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 表操作。
~~~
try {
//獲取QueryRunner對象
QueryRunner qr = new QueryRunner();
//執行SQL語句
String sql = "SELECT MAX(money) FROM zhangwu";
Object[] params = {};
Connection conn = JDBCUtils.getConnection();
Double max = qr.query(conn, sql, new ScalarHandler<Double>(), params);
//結果集的處理
System.out.println("max=" + max);
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
~~~
- 基礎
- 編譯和安裝
- scanner類(鍵盤錄入)
- Random類(隨機數)
- 數組
- 方法
- 類
- ArrayList集合
- char與int
- eclipse
- IDEA
- 變量與常量
- 常用API
- String,StringBuffer,StringBuilder
- 正則,Date,DateFormat,Calendar
- 包裝類,System,Math,Arrays,BigInteger,BigDecimal
- 集合,迭代器,增強for,泛型
- List,set,判斷集合唯一
- map,Entry,HashMap,Collections
- 異常
- IO
- File
- 遞歸
- 字節流
- 字符流
- IO流分類
- 轉換流
- 緩沖流
- 流的操作規律
- properties
- 序列化流與反序列化流
- 打印流
- commons-IO
- IO流總結
- 多線程
- 線程池
- 線程安全
- 線程同步
- 死鎖
- lock接口
- ThreadLoad
- 等待喚醒機制
- 線程狀態
- jdbc
- DBUtils
- 連接池DBCP
- c3p0連接池
- 網絡編程
- 多線程socket上傳圖片
- 反射
- xml
- 設計模式
- 裝飾器模式
- web service
- tomcat
- Servlet
- response
- request
- session和cookie
- JSP
- EL
- JSTL
- 事務
- 監聽器Listener
- 過濾器Filter
- json
- linux安裝軟件
- 反射詳解
- 類加載器和注解
- 動態代理
- jedis
- Hibernate
- 簡介
- 創建映射文件
- Hibernate核心配置文件
- 事務和增刪改查
- HibernateUtils
- 持久化對象的三種狀態
- 檢索方式
- query
- Criteria
- SQLQuery
- 持久化類
- 主鍵生成策略
- 緩存
- 事務管理
- 關系映射
- 注解
- 優化
- struts2
- 搭建
- 配置詳解
- Action
- 結果跳轉方式
- 訪問ServletAPI方式
- 如何獲得參數
- OGNL表達式
- valueStack 值棧
- Interceptor攔截器
- spring
- 導包
- IOC和DI
- Bean獲取與實例化
- Bean屬性注入
- spring注解
- 注解分層
- junit整合
- aop
- 動態代理實現
- cglib代理實現
- aop名詞
- spring的aop
- aop-xml詳解
- aop-注解詳解
- 代理方式選擇
- jdbcTemplate
- spring事務管理
- 回滾注意
- 事務傳播屬性
- MyBatis
- MyBatis簡介
- 入門程序
- 與jdbc hibernate不同
- 原始Dao開發
- Mapper動態代理方式
- SqlMapConfig.xml配置文件
- 輸入參數pojo包裝類
- resultMap
- 動態sql
- 一對一關聯
- 一對多
- 整合spring
- 逆向工程
- maven
- maven簡介
- 倉庫
- maven目錄結構
- maven常用命令
- 生命周期
- eclipse中maven插件
- 入門程序
- 整合struct
- 依賴范圍
- 添加插件
- idea配置
- jar包沖突
- 分模塊開發
- 構建可執行的jar包(包含依賴jar包)
- springMVC
- 處理流程
- java面試
- java版本升級
- java1-8版本變更
- java9新特性
- 鎖
- java資料
- idea
- jdk版本切換
- log4j
- 入門實例
- 基本使用方法
- Web中使用Log4j
- spring中使用log4j
- java代碼優化