java學(xué)習(xí)筆記之DBUtils工具包詳解
DBUtils工具包
一.介紹
DBUtils是Apache組織開源的數(shù)據(jù)庫工具類。
二.使用步驟
①.創(chuàng)建QueryRunner對象
②.調(diào)用update()方法或者query()方法執(zhí)行sql語句
三.構(gòu)造方法及靜態(tài)方法
QueryRunner類
1.構(gòu)造方法
①.無參構(gòu)造
QueryRunner qr =new QueryRunner();
使用無參構(gòu)造的時候,調(diào)用update方法和query方法時就需要使用帶Connection 類型參數(shù)的重載形式
②.有參構(gòu)造
QueryRunner qr= new QueryRunner(DataSource dataSource);
這個參數(shù)是連接池對象
2.靜態(tài)方法
①.int update(Connection con ,String sql ,Param);
該方法用于增刪改語句的操作
參數(shù)介紹:
參數(shù)一:連接池對象(這個在無參構(gòu)造的時候使用)
參數(shù)二:sql語句
參數(shù)三:可變參數(shù)(就是sql占位符的值)
返回值:int類型的 返回受影響的行數(shù)
簡單update demo
public class Demo {
public static void main(String[] args) throws Exception {
/*
* 演示有參構(gòu)造的update()方法
*
* 首先得導(dǎo)入jar包
* 配置好C3P0的配置文件與準備好C3P0工具類
* 然后創(chuàng)建QueryRunner對象
* 調(diào)用update方法
* 最后處理結(jié)果
*/
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
int re = qr.update("update user set name=? where uid=?","張三",2);
if(re>0){
System.out.println("修改成功");
}else {
System.out.println("修改失敗");
}
}
}
附上簡單的C3P0工具類
public class C3P0Utils {
private static DataSource dataSource=new ComboPooledDataSource();
/**
* 獲得DataSource實現(xiàn)類對象
* @return
*/
public static DataSource getDataSource(){
return dataSource;
}
/**
* 獲得連接
* @return
* @throws Exception
*/
public static Connection getConnection()throws Exception{
return dataSource.getConnection();
}
}
②.query(Connection con , String sql ,Param ...)
該方法用于出查詢操作
參數(shù)介紹:
參數(shù)一:Connection 數(shù)據(jù)庫連接對象, 使用帶參構(gòu)造時可以不用
參數(shù)二:sql語句
參數(shù)三:表示對結(jié)果集的處理方式 (ResultSetHandler接口)
ArrayHandler: 表示將結(jié)果集第一行的數(shù)據(jù)存入數(shù)組
ArrayListHandler 將結(jié)果集每一行的數(shù)據(jù)存入數(shù)組,多個數(shù)組存入集合 List<Object[]>
BeanHandler 表示將結(jié)果集第一行的數(shù)據(jù)存入Java Bean對象
BeanListHandler 表示將結(jié)果集每一行的數(shù)據(jù)存入Java Bean對象 ,多個對象存入集合
ColumnListHandler 表示將某一列的數(shù)據(jù)存入集合
MapHandler 表示將結(jié)果集第一行的數(shù)據(jù)存入Map集合 :鍵:列名 值:列的值
MapListHandler 表示將結(jié)果集每一行的數(shù)據(jù)存入Map集合 多個Map存入List集合 List<Map<,>>
ScalarHandler 獲取一個值: count(*) sum(price)
參數(shù)四:可變參數(shù)(就是sql占位符的值)
使用BeanListHandler處理方式的demo:
public void demo1() throws Exception{
QueryRunner qr = new QueryRunner(MyC3P0Utils.getDataSource());
List<Car> list = qr.query("select * from car where price<20 order by price desc", new BeanListHandler<>(Car.class));
for (Car car : list) {
System.out.println(car);
}
}
javaBean類的編寫:
public class Car {
private int cid;
private String cname;
private String company;
private String grade;
private double price;
@Override
public String toString() {
return "Car [cid=" + cid + ", cname=" + cname + ", company=" + company + ", grade=" + grade + ", price=" + price
+ "]";
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Car(int cid, String cname, String company, String grade, double price) {
super();
this.cid = cid;
this.cname = cname;
this.company = company;
this.grade = grade;
this.price = price;
}
public Car() {
super();
// TODO Auto-generated constructor stub
}
}
以上這篇java學(xué)習(xí)筆記之DBUtils工具包詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud通過Nacos實現(xiàn)注冊中心與遠程服務(wù)調(diào)用詳解流程
如果不滿足eureka注冊中心,那么本文記錄的Nacos是不二之選。本文主要記錄Springboot基于Nacos實現(xiàn)注冊中心以及遠程服務(wù)調(diào)用2022-07-07
Lombok同時使?@Data和@Builder踩坑總結(jié)
這篇文章主要介紹了Lombok同時使?@Data和@Builder踩坑總結(jié),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-05-05
SpringBoot2.x設(shè)置Session失效時間及失效跳轉(zhuǎn)方式
這篇文章主要介紹了SpringBoot2.x設(shè)置Session失效時間及失效跳轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Idea Jrebel 報錯:Cannot reactivate,offline 
本文主要介紹了Idea Jrebel 報錯:Cannot reactivate,offline seat in use,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
IDEA快速搭建Java開發(fā)環(huán)境的教程圖解
這篇文章主要介紹了IDEA如何快速搭建Java開發(fā)環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11
Canal搭建?idea設(shè)置及采集數(shù)據(jù)到kafka的操作方法
這篇文章主要介紹了Canal搭建idea設(shè)置及采集數(shù)據(jù)到kafka的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
idea打開項目后無法顯示目錄結(jié)構(gòu),只能顯示.iml文件問題
這篇文章主要介紹了idea打開項目后無法顯示目錄結(jié)構(gòu),只能顯示.iml文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08

