zoukankan      html  css  js  c++  java
  • 【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;
        }
     
  • 相关阅读:
    一个非侵入的Go事务管理库——如何使用
    事件驱动的微服务-事件驱动设计
    事件驱动的微服务-总体设计
    如何快速高效率地学习Go语言
    清晰架构(Clean Architecture)的Go微服务
    清晰架构(Clean Architecture)的Go微服务: 编码风格
    清晰架构(Clean Architecture)的Go微服务: 事物管理
    清晰架构(Clean Architecture)的Go微服务: 依赖注入(Dependency Injection)
    msf stagers开发不完全指北(四): msf 中使用域前置技术隐藏流量
    elementui 表格中带有按钮的loading解决方案
  • 原文地址:https://www.cnblogs.com/nishilunhui/p/2953245.html
Copyright © 2011-2022 走看看