`
czpae86
  • 浏览: 720577 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

    博客分类:
  • JAVA
阅读更多

使用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"));
 
分享到:
评论
2 楼 anjzhen 2013-03-26  
xmllong 写道
如何考虑到事务的处理?特别是UPDATE类的操作

手动关闭自动提交
1 楼 xmllong 2012-12-28  
如何考虑到事务的处理?特别是UPDATE类的操作

相关推荐

    DBUtils(通用的数据库工具类)

    DBUtils是Apache软件基金会开发的一个开源Java库,它提供了一套简单、易用且高度封装的数据库操作API,主要用于简化Java应用程序对数据库的访问。DBUtils的核心思想是为数据库操作提供一个安全、高效的抽象层,使得...

    python-dbutils 简单封装

    Python的dbutils模块是Apache的一个开源项目,它提供了一套用于数据库操作的工具类,能够帮助简化数据库连接和管理,提高开发效率。本教程将详细讲解如何对dbutils进行简单的封装,以更好地适应实际的Python数据库...

    小白用VB开发安卓程序-例程3、类DBUtils1操作SQLite数据库

    DBUtils1通常是一个自定义的辅助类,用于封装数据库操作,使得代码更加模块化和易于管理。它可能包含连接数据库、执行SQL语句、处理结果集等方法。以下是一些可能包含在DBUtils1类中的关键功能: 1. **连接与断开...

    DBUtils数据库工具类

    DBUtils是Apache Commons项目中的一个Java库,专为简化数据库操作而设计。它是一个轻量级的工具类库,提供了一套简洁、高效且线程安全的API,可以帮助开发者更方便地执行SQL语句,处理结果集,以及管理数据库连接。...

    使用dbutils操作数据库入门

    以下是一个使用DBCP连接池的示例配置: ```java Properties props = new Properties(); props.setProperty("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver"); props.setProperty("url", "jdbc:sqlserver...

    采用Apache dbutils操作数据库

    Apache DBUtils是一个基于Java的开源库,它提供了一种简单且有效的处理数据库连接的方法,减少了在应用程序中编写数据库操作代码的复杂性。DBUtils的主要设计目标是简化数据库访问,通过提供一套实用工具来处理常见...

    使用C3P0连接池和DButils进Dao模式的数据库操作

    DBUtils是Apache组织提供的一个小型且实用的Java数据库操作工具包,它简化了常见的数据库操作,如查询、更新、插入和删除等。DBUtils的核心功能是QueryRunner类,它提供了基于预编译SQL语句的操作方法,可以有效地...

    DBUtils.java数据库的基础封装操作

    1)一个DAO类封装的是一张表操作细节 2)DAO类命名规则:表名 + Dao。比如封装 emp 表操作细节:EmpDao;封装Dept表操作细节:DeptDao 3) DAO类所在包命名规则:公司网站域名.dao , 比如 com.bjpowernode.dao

    java数据库操作类-连接池

    总结来说,这个Java数据库操作类实现了基于连接池的数据库访问,通过`ConnectionPool`管理连接,`DBUtilsPool`结合DBUtils简化JDBC操作,`Config`存储数据库配置,而`DBManager`作为入口点协调整个过程。在Eclipse...

    模仿DBUtils(自己模仿DBUtils写的简易DBUtils)

    DBUtils是Apache Commons库中的一个组件,它提供了一套简单易用的数据库操作API,用于简化Java中的数据库访问。在本项目中,你将找到一个自己编写的简易DBUtils实现,虽然它不是Apache官方的DBUtils,但其设计思想和...

    dbutils封装ORM 实现BaseDAO

    在阅读博文《dbutils封装ORM 实现BaseDAO》(链接:https://shizhijian870525.iteye.com/blog/1767343)时,你可以深入学习如何结合`dbutils` 库来设计和实现一个高效、易用的DAO框架。文件"Dbutils"可能是作者提供...

    Apache-DBUtils封装JDBC

    使用了Apache Commons DbUtils库中的类和方法封装JDBC,使用了org.apache.commons.dbutils.Query...这些类是Apache Commons DbUtils库提供的一部分,用于简化JDBC编程,并提供了一些常见数据库操作的实用工具方法。

    DbUtils数据库查询工具包 v1.8.1.zip

    DbUtils 1.8.1版本是其稳定的一个版本,它包含了对数据库操作的基本功能,如执行SQL语句、处理结果集、管理数据库连接等。 DbUtils的核心设计理念是基于JDBC但又高于JDBC,它将JDBC的一些繁琐工作进行了封装,比如...

    JAVA使用DBUtils操作数据库

    DBUtils的主要目标是简化JDBC的使用,减少数据库操作中的异常处理和资源管理,使得开发者能够更加专注于业务逻辑。 在使用DBUtils之前,首先需要引入对应的jar包,即`commons-dbutils-1.7.jar`。这个库包含了...

    java数据库操作通用类

    3. 数据库兼容性:通用数据库操作类应尽可能地兼容多种数据库,考虑使用JDBC的兼容层如Apache的DBUtils库,以减少不同数据库之间的差异。 4. 安全性:避免在代码中硬编码数据库凭据,而是使用配置文件,提高系统的...

    Dbutils 的jar包

    Dbutils 基于 JDBC(Java Database Connectivity),提供了一套简洁、高效且易于使用的API,帮助开发者更方便地处理数据库操作,如执行SQL语句、处理结果集等。在Java开发中,使用Dbutils可以避免大量重复的JDBC模板...

    dbutils + oracle 增删改查批量插入示例

    在IT行业中,数据库操作是日常开发中的重要环节,而`dbutils`是一个非常实用的Java数据库操作工具包,它简化了对数据库进行增删改查(CRUD)操作的过程。本示例着重介绍如何结合`dbutils`与Oracle数据库进行高效的...

    nodejs封装好的mysql数据库模块,带mysql连接池以及百万测试数据

    3. **dbUtils.js**:这个文件很可能是封装数据库操作的工具类。它可能包含了初始化连接池、执行SQL语句、处理结果集等通用功能。通过这样的封装,可以简化代码,提高代码复用性,同时保持良好的模块化结构。 4. **...

    commons-dbutils-1.4.jar

    Apache Commons DBUtils是Apache软件基金会开发的一个开源项目,它提供了一套简洁、高效且实用的工具类,用于简化Java应用程序中的数据库操作。这个项目的最新版本为"commons-dbutils-1.4.jar",它的主要目标是减轻...

Global site tag (gtag.js) - Google Analytics