当前位置:首页 > 开发 > 开源软件 > 正文

使用dbutils封装的一个数据库操作类

发表于: 2011-04-28   作者:czpae86   来源:转载   浏览次数:
摘要: 使用commons-dbutils-1.3.jar,请自行下载.   关于Connection对象和事务在业务层作了处理.   主要代码如下:     package keel.util; import java.sql.Connection; import java.util.List; import java.util.Ma

使用commons-dbutils-1.3.jar,请自行下载.

 

关于Connection对象和事务在业务层作了处理.

 

主要代码如下:

 

 

package keel.util;

import java.sql.Connection;
import java.util.List;
import java.util.Map;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.log4j.Logger;

/**
 * 操作数据库方法
 * @author 蔡治平
 *
 */
public class SqlUtil {
	private static Logger logger = Logger.getLogger(SqlUtil.class);
	private static QueryRunner qr = new QueryRunner();
	
	/**
	 * 查询
	 * @param conn
	 * @param sql
	 * @param params
	 * @return List<Map<String, Object>>
	 */
	@SuppressWarnings("deprecation")
	public static List<Map<String, Object>> search(Connection conn, String sql, Object[] params){
		List<Map<String, Object>> mapList = null;
		try {
			if(params==null){
				mapList = qr.query(conn, sql, new MapListHandler());
			}else{
				mapList = qr.query(conn, sql, params, new MapListHandler());
			}			
		} catch (Exception e) {
			logger.error("查询出现异常!原因:"+e);
		}
		return mapList;
	}
	
	/**
	 * 查询,将结果返回到bean中,多个bean通过List包装返回
	 * @param <T>
	 * @param conn
	 * @param entityClass
	 * @param sql
	 * @param params
	 * @return List<T>
	 */
	@SuppressWarnings("unchecked")
	public static <T>List<T> search(Connection conn, Class<T> entityClass, String sql, Object[] params){
		List<T> list = null;
		try{
			if (params == null) {  
	            list = (List<T>) qr.query(conn, sql, new BeanListHandler(entityClass));  
	        } else {  
	            list = (List<T>) qr.query(conn, sql, new BeanListHandler(entityClass), params);  
	        }
		}catch(Exception e){
			logger.error("查询出现异常!原因:"+e);
		}		 
		return list;
	}
	
	/**
	 * 通过主键查找记录
	 * @param conn
	 * @param sql
	 * @param params
	 * @return Map<String, Object>
	 */
	public static Map<String, Object> getById(Connection conn, String sql, Object[] params){
		Map<String, Object> map = null;
		try{
			if (params == null) {  
				map = qr.query(conn, sql, new MapHandler());  
	        } else {  
	        	map = qr.query(conn, sql, new MapHandler(), params);  
	        }
		}catch (Exception e) {
			logger.error("查询出现异常!原因:"+e);
		}
		return map;
	}
	
	/**
	 * 查询表的记录总数
	 * @param conn
	 * @param table
	 * @return int
	 */
	public static int getTotal(Connection conn, String table){
		int total = 0;
		String field = "TOTAL";
		if(conn!=null){
			String sql = "SELECT COUNT(*) AS "+field+" FROM "+table;
			try {
				Map<String, Object> map = (Map<String, Object>) qr.query(conn, sql, new MapHandler());
				String n = map.get(field).toString();
				total = Integer.parseInt(n);
			} catch (Exception e) {
				logger.error("查询["+table+"]表记录总数出现异常!原因:"+e);
			}
		}else{
			logger.error("查询["+table+"]表记录总数出现异常!原因:连接为空!");
		}
		return total;
	}
	
	/**
	 * 更新,返回更新记录条数
	 * @param conn
	 * @param sql
	 * @param params
	 * @return int
	 */
	public static int update(Connection conn, String sql, Object[] params){
		int n = 0;
		try{
			if(params==null){
				n = qr.update(conn, sql);
			}else{
				n = qr.update(conn, sql, params);
			}			
		}catch(Exception e){
			logger.error("更新出现异常!原因:"+e);
		}
		return n;
	}
}

 

测试代码片段:

 

 

List<Map<String, Object>> list = SqlUtil.search(conn, sql, new Object[]{"1001","admin"});
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i).get("id"));
			System.out.println(list.get(i).get("userName"));
		}
		
		List<User> userList = SqlUtil.search(conn, User.class, sql, new Object[]{"1001","admin"});
		for(int i=0;i<userList.size();i++){
			System.out.println(userList.get(i).getId());
			System.out.println(userList.get(i).getUserName());
		}
		
		
		String sql1 = "update rg_user set flag = 1 where id=?";
		int n = SqlUtil.update(conn, sql1, new Object[]{"1001"});
		System.out.println(n);
		
		
		String sql2 = "select * from rg_user where id ='1001'";
		Map<String,Object> map = SqlUtil.getById(conn, sql2, null);
		System.out.println(map.get("id"));
 

使用dbutils封装的一个数据库操作类

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
装载请说明原地址,谢谢~~ 前两天我已经封装好一个duilib中使用的webkit内核的浏览器控件和一个基于
装载请说明原地址,谢谢~~ 前两天我已经封装好一个duilib中使用的webkit内核的浏览器控件和一个基于v
元数据的使用 1)想取得对数据库相关信息的描述,可以元数据 2)DatabaseMetaData/DatabaseMetaData d
在上一篇文章《使用poi读写Excel》中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一
今天把commons-dbutils-1.3的源码看了一遍 然后写了以下的示例代码 数据库用的是MS SQL SERVER 2005
1、DBUtils下载:http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi 2、API
通过使用queryRunner的查询方法,我们知道其使用了回调机制。 下面就对其中的参数ResultSetHandler
1. 建一个project 命名为DLinq ,添加一个Linq To SQL 的数据源,这里以经典的Northwind数据库为例,
附件 http://files.cnblogs.com/xe2011/CSharpWinForm_richTextBoxPrintClass.rar 在窗体上一个Rich
[我有废话要说] PA的U。M界面的树也是我封装的,做这个功能的时候,我希望它可以像smart-gwt的treeG
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号