DbUtils類
ResultSetHandler 介面
MapListHandler 類 (實現ResultSetHandler 介面)把從資料庫中查詢出的記錄 都 放到List 集合當中, List集合中每一個對象都是Map類型,可以根據這條記錄的欄位名讀出相對應的值.
BeanListHandler 類 (實現ResultSetHandler 介面)把從資料庫中的記錄 放到List集合中 ,List集合中每一個對象都是一個JavaBean類型的對象,可以根據get 方法得到值
QreryRunner類 執行SQL語名,其中一個參數為以上兩種類型的對象
import java.sql.Connection;import java.sql.SQLException;import java.util.List;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.sql.DataSource;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.ResultSetHandler;/** * 該類主要完成對資料庫的操作 * */public class SqlUtil {private static String datasoucename ="java:comp/env/jdbc/exam";private DataSource da; private static sqlUtil sqlutil = null; public static sqlUtil newInstance() { if(sqlutil == null) { sqlutil = new sqlUtil(); } return sqlutil; } public Connection getConnection() throws SQLException { synchronized (da) {return da.getConnection();} } /** * 構造方法,設定資料來源 * @param datasoucename */private sqlUtil() {init();}/** * 初始化資料來源的方法 */private void init() {try {Context ct = new InitialContext();this.da = (DataSource) ct.lookup(datasoucename);ct.close();} catch (NamingException e) {e.printStackTrace();}}/** * 對資料增刪改的方法,需要一個object的數組,資料是sql語句的預留位置 * @param sql * @param pring * @return */public boolean update(String sql, Object pring[]) {QueryRunner qu = new QueryRunner();int i = 0;boolean flag = false;try {i = qu.update(getConnection(),sql, pring);if(i>=0){flag = true;}} catch (SQLException e) {e.printStackTrace();}return flag;}/** * 對資料尋找的方法,需要一個objece的數組,資料是sql語句的預留位置,ResultSetHandler參數是你要把查詢出的資料轉換的類型 * 可以是一個javabean (如:new BeanListHandler (JavaBean.class)或:new MapListHandler ) * @param sql * @param pring 參數數組可以為空白 * @param rsh * @return */public List query(String sql, Object pring[], ResultSetHandler rsh) {QueryRunner qu = new QueryRunner();List result = null;try {result = (List) qu.query(getConnection(),sql, pring, rsh);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return result;}}
調用:
/** * 刪除 * @return boolean * @param ItemPool的Id */public boolean deteItemPool(String ipId) {String sql1 = "delete from ItemPool where ipId =? ";//指定所需要的參數 數組Object[] pring = {ipId};//執行更新boolean result = sql.update(sql1, pring);return result;}
/** * 根據題庫Id尋找題庫的方法 */public ItemPool searchItemPoolById(String ipId) {String sql1 = "select * from ItemPool where ipId=?";//指定參數數組Object[] pring = {ipId};List list = sql.query(sql1, pring, new BeanListHandler(ItemPool.class));ItemPool itempool=(ItemPool)list.get(0);return itempool;}