日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

DBUtils 笔记

發(fā)布時(shí)間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DBUtils 笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

一、DBUtils介紹 ?apache

什么是dbutils,它的作用

DBUtilsjava編程中的數(shù)據(jù)庫(kù)操作實(shí)用工具,小巧簡(jiǎn)單實(shí)用。

DBUtils封裝了對(duì)JDBC的操作,簡(jiǎn)化了JDBC操作。可以少寫(xiě)代碼。

1.對(duì)于數(shù)據(jù)表的讀操作,他可以把結(jié)果轉(zhuǎn)換成ListArraySetjava集合,便于程序員操作;

2.對(duì)于數(shù)據(jù)表的寫(xiě)操作,也變得很簡(jiǎn)單(只需寫(xiě)sql語(yǔ)句)

3.可以使用數(shù)據(jù)源,使用JNDI,數(shù)據(jù)庫(kù)連接池等技術(shù)來(lái)優(yōu)化性能--重用已經(jīng)構(gòu)建好的數(shù)據(jù)庫(kù)連接對(duì)象

?

?

二、DBUtils的三個(gè)核心對(duì)象

> QueryRunner類(lèi)

> ResultSetHandler接口

> DBUtils類(lèi)

?

QueryRunner類(lèi)

QueryRunner中提供對(duì)sql語(yǔ)句操作的API.

它主要有三個(gè)方法

query() 用于執(zhí)行select

update() 用于執(zhí)行insert update delete

batch() 批處理

ResultSetHandler接口

用于定義select操作后,怎樣封裝結(jié)果集.

DbUtils類(lèi)

它就是一個(gè)工具類(lèi),定義了關(guān)閉資源與事務(wù)處理的方法

?

三、Dbutils快速入門(mén)

> 導(dǎo)入jar

> 創(chuàng)建QueryRunner對(duì)象

> 使用query方法執(zhí)行select語(yǔ)句

> 使用ResultSetHandler封裝結(jié)果集

> 使用DbUtils類(lèi)釋放資源

?

Dbutils快速入門(mén)實(shí)現(xiàn)步驟:

創(chuàng)建數(shù)據(jù)庫(kù)及表

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;

?

第一步:導(dǎo)入jar

?

注意:?c3p0mysql驅(qū)動(dòng)jar也要導(dǎo)入。

?

//創(chuàng)建QueryRunner對(duì)象

//使用query方法執(zhí)行select語(yǔ)句

//使用ResultSetHandler封裝結(jié)果集

//使用DbUtils類(lèi)釋放資源

四、QueryRunner對(duì)象

1.1 構(gòu)造函數(shù):

> new QueryRunner(); 它的事務(wù)可以手動(dòng)控制。

也就是說(shuō)此對(duì)象調(diào)用的方法(如:query、update、batrch)參數(shù)中要有Connection對(duì)象。

> new QueryRunner(DataSource ds); 它的事務(wù)是自動(dòng)控制的。一個(gè)sql一個(gè)事務(wù)。
此對(duì)象調(diào)用的方法(如:query、update、batrch)參數(shù)中無(wú)需Connection對(duì)象。

1.2 方法

?

?

?

進(jìn)行基本的CRUD操作:練一下

?

?

五、ResultSetHandler接口

ResultSetHandler下的所有結(jié)果處理器

//ArrayHandler:適合取1條記錄。把該條記錄的每列值封裝到一個(gè)數(shù)組中Object[]//ArrayListHandler:適合取多條記錄。把每條記錄的每列值封裝到一個(gè)數(shù)組中Object[],把數(shù)組封裝到一個(gè)List中//ColumnListHandler:取某一列的數(shù)據(jù)。封裝到List中。//KeyedHandler:取多條記錄,每一條記錄封裝到一個(gè)Map中,再把這個(gè)Map封裝到另外一個(gè)Map中,key為指定的字段值。//MapHandler:適合取1條記錄。把當(dāng)前記錄的列名和列值放到一個(gè)Map中//MapListHandler:適合取多條記錄。把每條記錄封裝到一個(gè)Map中,再把Map封裝到List中//ScalarHandler:適合取單行單列數(shù)據(jù)

BeanHandlerBeanListHandler 

?

?

六、DBUtils控制事務(wù)的開(kāi)發(fā)

?

七、ThreadLocal

模擬ThreadLocal的設(shè)計(jì),讓大家明白他的作用。

public class ThreadLocal{private Map<Runnable,Object> container = new HashMap<Runnable,Object>();public void set(Object value){container.put(Thread.currentThread(),value);//用當(dāng)前線程作為key

}public Object get(){return container.get(Thread.currentThread());}public void remove(){container.remove(Thread.currentThread());}}

?

總結(jié):調(diào)用該類(lèi)的get方法,永遠(yuǎn)返回當(dāng)前線程放入的數(shù)據(jù)。線程局部變量。

?

八、完成案例

1、項(xiàng)目開(kāi)發(fā)的做準(zhǔn)備工作

創(chuàng)建數(shù)據(jù)庫(kù)及表

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,'計(jì)算機(jī)','好書(shū)');INSERT INTO books VALUES('1002','金瓶子',10,20,'言情','好書(shū)');INSERT INTO books VALUES('1003','金瓶子2',20,30,'武俠','好書(shū)');

?

?

2、創(chuàng)建項(xiàng)目

2、1添加jar

?

3、添加Dao、serviceservlet分層代碼

?

轉(zhuǎn)載于:https://www.cnblogs.com/Liang-Haishan216/p/6253738.html

總結(jié)

以上是生活随笔為你收集整理的DBUtils 笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。