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 block e.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; }