• 【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;
        }
     
  • 相关阅读:
    成绩单问题
    详细介绍Linux shell脚本基础学习(一)
    千万级并发连接的秘密
    前段面试题
    cat 命令
    面试的一个网页设计师
    准备准备
    ls显示文件
    [HDU 1010 ]Tempter of the Bone
    Linux下的绘图(流程图、UML、mindmap)工具
  • 原文地址:https://www.cnblogs.com/nishilunhui/p/2953245.html
Copyright © 2020-2023  润新知