DBUtils 笔记
?
一、DBUtils介紹 ?apache
什么是dbutils,它的作用
DBUtils是java編程中的數據庫操作實用工具,小巧簡單實用。
DBUtils封裝了對JDBC的操作,簡化了JDBC操作。可以少寫代碼。
1.對于數據表的讀操作,他可以把結果轉換成List,Array,Set等java集合,便于程序員操作;
2.對于數據表的寫操作,也變得很簡單(只需寫sql語句)
3.可以使用數據源,使用JNDI,數據庫連接池等技術來優化性能--重用已經構建好的數據庫連接對象
?
?
二、DBUtils的三個核心對象
> QueryRunner類
> ResultSetHandler接口
> DBUtils類
?
QueryRunner類
QueryRunner中提供對sql語句操作的API.
它主要有三個方法
query() 用于執行select
update() 用于執行insert update delete
batch() 批處理
ResultSetHandler接口
用于定義select操作后,怎樣封裝結果集.
DbUtils類
它就是一個工具類,定義了關閉資源與事務處理的方法
?
三、Dbutils快速入門
> 導入jar包
> 創建QueryRunner對象
> 使用query方法執行select語句
> 使用ResultSetHandler封裝結果集
> 使用DbUtils類釋放資源
?
Dbutils快速入門實現步驟:
創建數據庫及表
CREATE DATABASE day14;USE day14;create table account(id int primary key auto_increment,name varcar(50),money float);insert into account(name,money) values('aaa',1000);insert into account(name,money) values('bbb',1000);insert into account(name,money) values('ccc',1000);SELECT * FROM account;
?
第一步:導入jar包
?
注意:?c3p0與mysql驅動jar也要導入。
?
//創建QueryRunner對象
//使用query方法執行select語句
//使用ResultSetHandler封裝結果集
//使用DbUtils類釋放資源
四、QueryRunner對象
1.1 構造函數:
> new QueryRunner(); 它的事務可以手動控制。
也就是說此對象調用的方法(如:query、update、batrch)參數中要有Connection對象。
> new QueryRunner(DataSource ds); 它的事務是自動控制的。一個sql一個事務。
此對象調用的方法(如:query、update、batrch)參數中無需Connection對象。
1.2 方法
?
?
?
進行基本的CRUD操作:練一下
?
?
五、ResultSetHandler接口
ResultSetHandler下的所有結果處理器
//ArrayHandler:適合取1條記錄。把該條記錄的每列值封裝到一個數組中Object[]//ArrayListHandler:適合取多條記錄。把每條記錄的每列值封裝到一個數組中Object[],把數組封裝到一個List中//ColumnListHandler:取某一列的數據。封裝到List中。//KeyedHandler:取多條記錄,每一條記錄封裝到一個Map中,再把這個Map封裝到另外一個Map中,key為指定的字段值。//MapHandler:適合取1條記錄。把當前記錄的列名和列值放到一個Map中//MapListHandler:適合取多條記錄。把每條記錄封裝到一個Map中,再把Map封裝到List中//ScalarHandler:適合取單行單列數據 BeanHandlerBeanListHandler
?
?
六、DBUtils控制事務的開發
?
七、ThreadLocal
模擬ThreadLocal的設計,讓大家明白他的作用。
public class ThreadLocal{private Map<Runnable,Object> container = new HashMap<Runnable,Object>();public void set(Object value){container.put(Thread.currentThread(),value);//用當前線程作為key }public Object get(){return container.get(Thread.currentThread());}public void remove(){container.remove(Thread.currentThread());}}
?
總結:調用該類的get方法,永遠返回當前線程放入的數據。線程局部變量。
?
八、完成案例
1、項目開發的做準備工作
創建數據庫及表
create database day14;use day14;create table books(id varchar(200) primary key,name varchar(100) not null,price double,pnum int,category varchar(50),description varchar(200))SELECT * FROM books;INSERT INTO books VALUES('1001','java編程思想',98,100,'計算機','好書');INSERT INTO books VALUES('1002','金瓶子',10,20,'言情','好書');INSERT INTO books VALUES('1003','金瓶子2',20,30,'武俠','好書');
?
?
2、創建項目
2、1添加jar包
?
3、添加Dao、service、servlet分層代碼
?
轉載于:https://www.cnblogs.com/Liang-Haishan216/p/6253738.html
總結
以上是生活随笔為你收集整理的DBUtils 笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设置浏览器的颜色
- 下一篇: 阿玛尼粉饼62R20A是什么意思?