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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

DBUtils、连接池

發布時間:2024/10/14 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DBUtils、连接池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.DBUtils

它是JDBC的簡化開發工具包

需項目導入commons-dbutils-1.6.jar

3個核心功能:

  • QuerryRunner:提供對SQL語句操作的API
  • ResultSetHandler:接口,用于定義select操作后,怎樣封裝結果集
  • DBUtils類:一個工具類,定義了關閉資源與事務處理的方法

2.QuerryRunner

update(Connection conn,String sql,Object...params):用于完成表數據的增刪改;

query(Connection conn,String sql,ResultSetHandler<T> rsh,params):用于完成表數據的查詢操作

2.1添加

public void insert(){try{QuerryRunner qr=new QuerryRunner();String sql="INSERT INTO zhangwu(name,money,parent VALUES(?,?,?))";Object[] params={"股票收入","5500","收入"};//分別對應3個?Connextion xonn=JDBCUtils.getCOnextion();int line=qr.update(conn,sql,params);System.out.println("line"+line);}catch(SQLException e){throw new RuntimeException(e);} }

2.2更新

public void insert(){try{QuerryRunner qr=new QuerryRunner();String sql="UPDATE zhangwu SET money=money+1000 WHERE name=?";Object[] params={"股票收入"};Connextion xonn=JDBCUtils.getCOnextion();int line=qr..update(conn,sql,params);System.out.println("line"+line);}catch(SQLException e){throw new RuntimeException(e);} }

2.3刪除

public void insert(){try{QuerryRunner qr=new QuerryRunner();String sql="DELETE FROM zhangwu WHERE name=?";Object[] params={"股票收入"};Connextion conn=JDBCUtils.getCOnextion();int line=qr..update(conn,sql,params);System.out.println("line"+line);}catch(SQLException e){throw new RuntimeException(e);} }

2.4查詢

ResultSetHandler結果集處理類

2.4.1 ArrayHandler

將結果集中的第一條記錄封裝到一個Object[ ]數組中,數組中的每個元素就是這條記錄中的每一個字段的值。

public void insert(){try{QuerryRunner qr=new QuerryRunner();String sql="SELECT * FROM zhangwu";Object params={};Connextion conn=JDBCUtils.getCOnextion();Object[] objArray=qr.query(conn,sql,new ArrayHandler(),params);System.out.println(Arrays.toString(objArray));}catch(SQLException e){throw new RuntimeException(e);} }

2.4.2 ArrayListHandler

將結果集中的每一條記錄封裝到一個Object[ ]數組中,然后將這些數組在封裝到List集合中。

public void insert(){try{QuerryRunner qr=new QuerryRunner();String sql="SELECT * FROM zhangwu WHERE money=?";Object params={2000};Connextion conn=JDBCUtils.getCOnextion();List<Object[]> list=qr.query(conn,sql,new ArrayListHandler(),params);for(Object[] arr:list){System.out.println(Arrays.toString(objArray));}}catch(SQLException e){throw new RuntimeException(e);} }

2.4.3 BeanHandler

將結果集中的第一條記錄封裝到一個JavaBean中。

public void insert(){try{QuerryRunner qr=new QuerryRunner();String sql="SELECT * FROM zhangwu WHERE money=?";Object params={2000};Connextion conn=JDBCUtils.getCOnextion();zhangwu zw=qr.query(conn,sql,new BeanHandler<zhangwu>(zhangwu.class),params);System.out.println(zw);}catch(SQLException e){throw new RuntimeException(e);} }
  • JavaBean:是一種Java語言寫成的可重用組件。(http://www.runoob.com/jsp/jsp-javabean.html)
  • 為寫成JavaBean,類必須是具體的和公共的,并且具有無參數的構造器。JavaBean 通過提供符合一致性設計模式的公共方法將內部域暴露成員屬性,set和get方法獲取。
  • 特點:
    • 提供一個默認的無參構造函數。
    • 需要被序列化并且實現了Serializable接口。
    • 可能有一系列可讀寫屬性(私有字段:private 類型 字段名)
    • 可能有一系列的"getter"或"setter"方法
  • 屬性:
    • 一個JavaBean對象的屬性應該是可訪問的。這個屬性可以是任意合法的Java數據類型,包括自定義Java類。
    • 一個JavaBean對象的屬性可以是可讀寫,或只讀,或只寫。JavaBean對象的屬性通過JavaBean實現類中提供的兩個方法來訪問:

getPropertyName()

舉例來說,如果屬性的名稱為myName,那么這個方法的名字就要寫成getMyName()來讀取這個屬性。這個方法也稱為訪問器。
setPropertyName()舉例來說,如果屬性的名稱為myName,那么這個方法的名字就要寫成setMyName()來寫入這個屬性。這個方法也稱為寫入器。
  • 示例:
public class StudentsBean implements java.io.Serializable{private String name = null;private int age = 0;public StudentsBean() {}public String getName(){return name;}public int getAge(){return age;}public void setName(String name){this.name = name;}public void setAge(int age) {this.age = age;} }

2.4.4 BeanListHandler

將結果集中的每一條記錄封裝到一個JavaBean中。再將這些JavaBean封裝到List集合中。

public void insert(){try{QuerryRunner qr=new QuerryRunner();String sql="SELECT * FROM zhangwu WHERE money=?";Object params={2000};Connextion conn=JDBCUtils.getCOnextion();List<zhangwu> list=qr.query(conn,sql,new BeanListHandler<zhangwu>(zhangwu.class),params);for(zhangwu zw:list){System.out.println(zw);}}catch(SQLException e){throw new RuntimeException(e);} }

2.4.5 ColumnListHandler

將結果集中指定的列的字段值封裝到一個List集合中。

public void insert(){try{QuerryRunner qr=new QuerryRunner();String sql="SELECT * FROM zhangwu WHERE money=?";Object params={2000};Connextion conn=JDBCUtils.getCOnextion();List<String> list=qr.query(conn,sql,new ColumnListHandler<String>(zhangwu.class),params);for(String str:list){System.out.println(str);}}catch(SQLException e){throw new RuntimeException(e);} }

2.4.6 ScalerHandler

用于單數據,eg. select count(*) from user。

public void insert(){try{QuerryRunner qr=new QuerryRunner();String sql="SELECT MAX(money) FROM zhangwu";Object params={};Connextion conn=JDBCUtils.getCOnextion();Double max=qr.query(conn,sql,new ScalarHandler<Double>(),params);System.out.println("max="+max);}catch(SQLException e){throw new RuntimeException(e);} }

2.4.7 MapHandler

將結果集中第一行數據封裝到Map集合中,key列名,value該列數據。

2.4.8 MapListHandler

將結果集的每一行封裝到一個Map中,再將這些Map封裝到List中。

3.連接池

用池管理連接Connection,以達到復用Connection的目的。

不用自己創建,通過池來獲取Connection對象。

調用Connection的close()方法,并不會關閉Connection,而是將它還給池,池可再分配它。

javax.sql.DataSource

Java為數據庫連接池提供的公共接口。

各個廠商應讓自己的連接池實現這個接口,以便應用程序可以方便切換不同廠商的連接池。

常見的連接池:DBCP、C3PO

3.1DBCP

tomcat內置的連接池。

導入jar包。

commons-dbcp-1.4.jar

commons-pool-1.5.6.jar

DataSource:java提供的連接池規則接口,作為DriverManager工具的替代項。

在DBCP中提供了其實現類:BasicDataSource

創建連接池

public static BasicDataSource datasource=new BasicDataSource();public static final String DRIVERNAME="com.mysql.jdbc.Driver";public static final String URL="JDBC:MYSQL://LOCALHOST:3306/mydb";public static final String USERNAME="root";public static final String PAEEWORD="root";static{datasource.serDriverClassName(DRIVER);datasource.setUrl(URL);datasource.setUsername(USERNAME);datasource.sePassword(PASSWORD); }

返回連接池對象

public static DataSource getDataSource{return datasource; }

使用

public void insert(){try{QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());String sql="INSERT INTO zhangwu (name,monet,parent) VALUES(?,?,?);Object[] params={"股票交易","5500","收入"};int line=qr.update(sql,params);//沒有conn這個參數了System.out.println("line="+line);}catch(SQLException E){throw new RuntimeException(e);} } public void search(){try{QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());String sql="INSERT INTO zhangwu (name,monet,parent) VALUES(?,?,?);Object[] params={"股票交易","5500","收入"};Product p=qr.query(sql,new BeanHandler<Product>(Product.class),params);System.out.println("line="+line);}catch(SQLException E){throw new RuntimeException(e);} }

常見配置項

必須項

  • driverClassName
  • url
  • username
  • password

基本項(擴展)

  • maxActive:最大連接數量
  • minIdle:最小空閑連接
  • maxIdle:最大空閑連接
  • initialsize:初始化連接

?

總結

以上是生活随笔為你收集整理的DBUtils、连接池的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。