package com.fdmis.util;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
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.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
public class DBUtils {
//数据源配置
private static final String DATA_SOURCE="java:EFLOWSource";
private DataSource dataSource=this.getDataSource();
/**
*ArrayHandler:把结果集中的第一行数据转成对象数组。
*ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
*BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
*BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
*ColumnListHandler:将结果集中某一列的数据存放到List中。
*KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。
*MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
*MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
*/
/**
* 得到第一行数据,类型List<Object>
*/
public List<Object> getOneByArray(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
Object result[] = (Object[]) qr.query(sql, new ArrayHandler());
return Arrays.asList(result);
}
/**
* 得到每一行数据,类型List<Array>
*/
public List<Object[]> getAllByArray(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
List<Object[]> list = (List<Object[]>) qr.query(sql, new ArrayListHandler());
return list;
}
/**
* 得到第一行数据,类型Map<String,Object>
*/
public Map<String,Object> getOneByMapHandler(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
Map<String,Object> map = (Map<String,Object>) qr.query(sql, new MapHandler());
return map;
}
/**
* 得到每一行数据,类型List<Map<String,Object>>
*/
public List<Map<String,Object>> getAllMapListHandler(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
List<Map<String,Object>> list = (List<Map<String,Object>>) qr.query(sql, new MapListHandler());
return list;
}
/**
* 得到每一行数据,类型JsonString
*/
public String getAllJsoonHandler(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
List<Map<String,Object>> list = (List<Map<String,Object>>) qr.query(sql, new MapListHandler());
JsonUtil jsonUtil= new JsonUtil();
return jsonUtil.toStrings(list);
}
/**
* 得到第一行数据,类型Bean.class
*/
@SuppressWarnings("rawtypes")
public <T> T find(String sql,final Class<T> type) throws SQLException {
QueryRunner qr = new QueryRunner(dataSource);
@SuppressWarnings("unchecked")
T t = (T) qr.query(sql,new BeanHandler(type));
return t;
}
/**
* 得到每一行数据,类型List<Bean.class>
*/
@SuppressWarnings("rawtypes")
public <T>List<T> getAll(String sql,final Class<T> type) throws SQLException {
QueryRunner qr = new QueryRunner(dataSource);
@SuppressWarnings("unchecked")
List<T> list = (List<T>) qr.query(sql, new BeanListHandler(type));
return list;
}
/**
* 得到总条数
*/
@SuppressWarnings("rawtypes")
public Integer getScalarHandler(String sql) throws SQLException{
QueryRunner qr = new QueryRunner(dataSource);
@SuppressWarnings("unchecked")
Integer count = qr.query(sql, new ScalarHandler(1));
return count;
}
//获取数据源
private DataSource getDataSource(){
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(DATA_SOURCE);
return ds;
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
//获取连接
public static Connection getConnection(){
Context ctx;
try {
ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(DATA_SOURCE);
return ds.getConnection();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
更新日期20150902
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
DBUtil工具类是Java开发中常见的一种数据库操作辅助类,它的主要目的是为了简化数据库的CRUD(创建、读取、更新、删除)操作,提高开发效率。DBUtil通常集成了连接池技术,如Druid、C3P0或HikariCP等,以优化数据库...
DbUtil 对 JDBC 进行简单的...但 DbUtil 对类的自动装载没有进行较好的封装 本demo实现了数据库中字段若为下划线分隔,而对应的实体类中是以驼峰式命名的情况进行自动装载 利用 resultSet 的元数据和 JAVA 的暴力反射
韩顺平SqlHelper和DBUtil工具类是为了解决这一问题而设计的,它们提供了一种方便的方式来处理SQL Server数据库。这两个工具类是非静态的,这意味着它们可以被实例化并复用,从而避免了静态类可能带来的线程安全问题...
在这个“dbutil工具类使用demo”中,我们将探讨如何利用dbutil(可能是Apache Commons DbUtils库)和Maven Druid数据源来高效、安全地执行数据库交互。DbUtils是一个小型且实用的库,它简化了JDBC代码,提供了基本的...
DBUtil 是一个在ASP.NET开发环境中常用的数据库连接工具类,它的设计目的是为了简化数据库操作,减少程序员编写重复的连接和断开数据库的代码,从而提高开发效率和代码的可维护性。通过使用DBUtil,开发者可以快速地...
2. 谨慎处理事务,DBUtil工具类可能不包含事务管理功能,需要在上层代码中控制事务边界。 3. 注意资源释放,即使DBUtil会自动管理连接,但仍然建议在完成操作后调用相应方法关闭结果集、Statement和Connection。 4. ...
它通过提供一系列实用工具方法来帮助开发者更方便地处理 SQL 查询结果,并减少样板代码的数量。 #### 二、核心组件介绍 - **QueryRunner**: 用于执行 SQL 查询的核心类。 - **BeanHandler**: 处理查询结果并转换为...
Apache DBUtils是一个轻量级的Java数据库访问工具包,它基于ApacheJakarta项目,主要提供了一种简单且有效的处理数据库连接的方式。这个“对apache的dbutil的改进版”是针对原始DBUtils进行了一些优化和扩展,以满足...
Apache DbUtils是一个由Apache软件基金会开发的开源Java库,它主要设计用于简化JDBC(Java Database Connectivity)操作。DbUtils库提供了一套实用工具方法,能够帮助开发者更高效、更安全地执行数据库操作,避免了...
DBUtil的类,在WEB开发当中有许多项目都需要用它,可以不用重复写,这样很方便
写好sql语句,调用该工具类内的方法,即可实现增删改查mysql数据库的操作。带有详细解释
Apache最新的DButil工具类已经文档
SQLServer数据库工具类(DBUtil.java)JDBC连接数据库
Apache DBCP,工具亲测有效,=================================================================================
- 数据库操作工具类:如DBUtil,封装JDBC连接、SQL执行、结果集处理等,简化数据库操作。 - JSON解析工具类:如JsonUtil,提供JSON字符串与Java对象间的转换,如Gson或Jackson库的封装。 - 线程工具类:如...
MySQL工具类是Java开发中常用的一种抽象,它封装了对MySQL数据库进行操作的基本方法,使得开发者无需关注底层的SQL执行细节,而是通过调用预定义的函数就能完成数据的增删改查等任务。本篇将详细介绍这个工具类以及...
这个库是基于Java的,提供了一套实用工具类,使得开发者在处理JDBC(Java Database Connectivity)时可以更加方便和高效。DBUtils的核心理念是提供一个简单、安全的方式来执行数据库操作,避免了常见的错误和资源...
Dbutil,全称为Apache Commons DbUtils,是一款由Apache软件基金会开发的开源Java工具包,它为JDBC(Java Database Connectivity)提供了一层简单的封装,旨在让数据库操作变得更加便捷且不易出错。DbUtil的设计目标...
这个名为"JavaWeb相关工具类"的压缩包很可能包含了一些常用的、预封装好的Java类,这些类集成了各种常见的功能,使得在处理Web相关任务时更加高效。下面,我们将深入探讨JavaWeb工具类的一些核心知识点。 1. **字符...