利用DBUtils進一步簡化JDBC數據庫的增刪改查的代碼,同時利用從鏈接池中接取鏈接,進而進行簡化和減小資源的消耗!java
1、DBUtils:mysql
一、DBUtils就是JDBC的簡化開發工具包。須要項目導入commons-dbutils-1.6.jar纔可以正常使用DBUtils工具。sql
二、DBUtils是java編程中的數據庫操做實用工具,小巧簡單實用。數據庫
DBUtils封裝了對JDBC的操做,簡化了JDBC操做,能夠少寫代碼。apache
Dbutils三個核心功能介紹編程
①、QueryRunner中提供對sql語句操做的API;oracle
②、 ResultSetHandler接口,用於定義select操做後,怎樣封裝結果集;dom
③、DbUtils類,它就是一個工具類,定義了關閉資源與事務處理的方法。工具
2、QueryRunner核心類:開發工具
一、update(Connection conn, String sql, Object... params) ,用來完成表數據的增長、刪除、更新操做(…是可變參數) 有返回值int
二、 query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用來完成表數據的查詢操做
3、update的增刪改:
// 新增 public int addSort(Integer sid, String sname) throws SQLException { // 獲取鏈接對象 // Connection conn = JDBCUtils.getConn(); // 建立QueryRunner對象 // QueryRunner qr = new QueryRunner(); QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource()); String sql = "insert into sort values(?,?)"; // int row = qr.update(conn, sql, sid, sname); int row = qr.update(sql, sid, sname); return row; } // 修改 public int updateSort(Integer sid, String sname) throws SQLException { // 獲取鏈接對象 Connection conn = JDBCUtils.getConn(); // 建立QueryRunner對象 QueryRunner qr = new QueryRunner(); String sql = "update sort set sname=? where sid=?"; int row = qr.update(conn, sql, sname, sid); return row; } // 刪除 public int deleteSort(Integer sid) throws SQLException { // 獲取鏈接對象 Connection conn = JDBCUtils.getConn(); // 建立QueryRunner對象 QueryRunner qr = new QueryRunner(); String sql = "delete from sort where sid=?"; int row = qr.update(conn, sql, sid); return row; }
4、query查詢:
query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
一、ResultSetHandler(是個接口,須要實現類)結果集處理類:
二、JavaBean:(實體類---之前的domain包)
JavaBean就是一個類,在開發中經常使用封裝數據。具備以下特性:
①、須要實現接口:java.io.Serializable ,一般實現接口這步驟省略了,不會影響程序。
②、提供私有字段:private 類型 字段名;
③、提供getter/setter方法:
④、提供無參構造
// ArrayListHandler查詢 public List<Object[]> get1() throws SQLException { // 獲取鏈接對象 Connection conn = JDBCUtils.getConn(); // 建立QueryRunner對象 QueryRunner qr = new QueryRunner(); String sql = "select * from sort "; List<Object[]> obj = qr.query(conn, sql, new ArrayListHandler()); return obj; } // BeanHandler查詢 public Sort get2(Integer sid, String sname) throws SQLException { // 獲取鏈接對象 Connection conn = JDBCUtils.getConn(); // 建立QueryRunner對象 QueryRunner qr = new QueryRunner(); String sql = "select * from sort where sid = ? and sname = ?"; Sort sort = qr.query(conn, sql, new BeanHandler<Sort>(Sort.class), sid, sname); return sort; } // BeanListHandler查詢 public List<Sort> get3() throws SQLException { // 獲取鏈接對象 Connection conn = JDBCUtils.getConn(); // 建立QueryRunner對象 QueryRunner qr = new QueryRunner(); String sql = "select * from sort "; List<Sort> sort = qr.query(conn, sql, new BeanListHandler<Sort>(Sort.class)); return sort; } //ColumnListHandler查詢 public List<String> get4() throws SQLException { // 獲取鏈接對象 Connection conn = JDBCUtils.getConn(); // 建立QueryRunner對象 QueryRunner qr = new QueryRunner(); String sql = "select * from sort "; List<String> list = qr.query(conn, sql, new ColumnListHandler<String>("sname")); return list; } //ScalarHandler查詢 public Integer get5() throws SQLException { // 獲取鏈接對象 // Connection conn = JDBCUtils.getConn(); // 建立QueryRunner對象 QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource()); String sql = "select count(*) from sort "; Long count = qr.query( sql, new ScalarHandler<Long>()); //Long轉成Integer return count.intValue(); }
5、鏈接池:
一、概述:
用池來管理Connection,這樣能夠重複使用Connection。有了池,因此咱們就不用本身來建立Connection,而是經過池來獲取Connection對象。當使用完Connection後,調用Connection的close()方法也不會真的關閉Connection,而是把Connection「歸還」給池。池就能夠再利用這個Connection對象了。(不調用的話自動歸還)
二、規範:
Java爲數據庫鏈接池提供了公共的接口:javax.sql.DataSource,各個廠商須要讓本身的鏈接池實現這個接口。這樣應用程序能夠方便的切換不一樣廠商的鏈接池!
常見的鏈接池:DBCP、C3P0。
三、DBCP鏈接池:
①、導包:commons-dbcp-1.4.jar commons-pool-1.5.6.jar
②、編寫工具類:
鏈接數據庫表的工具類, 採用DBCP鏈接池的方式來完成,Java中提供了一個鏈接池的規則接口 :
DataSource : 它是java中提供的鏈接池,做爲 DriverManager 工具的替代項。在DBCP包中提供了DataSource接口的實現類,咱們要用的具體的鏈接池 BasicDataSource類:
package com.oracle.tools; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; public class MyDBUtils { public static final String DRIVER = "com.mysql.jdbc.Driver"; public static final String URL = "jdbc:mysql://localhost:3306/java0603?useUnicode=true&characterEncoding=UTF-8"; public static final String USERNAME = "root"; public static final String PASSWORD = "123456"; /* * 建立鏈接池BasicDataSource */ public static BasicDataSource dataSource = new BasicDataSource(); //靜態代碼塊(優先只執行一次) static { //對鏈接池對象 進行基本的配置 dataSource.setDriverClassName(DRIVER); // 這是要鏈接的數據庫的驅動 dataSource.setUrl(URL); //指定要鏈接的數據庫地址 dataSource.setUsername(USERNAME); //指定要鏈接數據的用戶名 dataSource.setPassword(PASSWORD); //指定要鏈接數據的密碼 } /* * 返回鏈接池對象 */ public static DataSource getDataSource(){ return dataSource; } }
三、常見配置項: