zoukankan      html  css  js  c++  java
  • Java DbUtils的用法,转

    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;
    	}
  • 相关阅读:
    ABP实现文件下载
    sqlserver把查询结果转为json和xml
    使用docker安装nginx
    sqlserver 索引优化 sql语句执行分析
    centos7下安装docker教程
    mysql查看sql的执行计划(是否使用索引等)
    vue计算属性和watch的区别有哪些?
    多表连接的三种方式详解 hash join、merge join、 nested loop
    【Winform】所有的dll都打包到一个exe里
    【异常处理】System.Data.Entity.Core.EntityException: 'The underlying provider failed on Open.'
  • 原文地址:https://www.cnblogs.com/huangjacky/p/1739865.html
Copyright © 2011-2022 走看看