【java】DBUtil 用法 (转)

 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;
    }
 
原文地址:https://www.cnblogs.com/nishilunhui/p/2953245.html