package com.ydbg.gis.utils;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.apache.commons.lang.NumberUtils; /**
* @author y
* @date 2015-5-10 10:43:04
* @version V1.0
* @desc QuerryRunner 工具类
*/
public final class QrUtil { private static final QueryRunner qr = new QueryRunner(); private static class QrUtilHolder{
private static final QrUtil instance = new QrUtil();
} public static QrUtil getInstance(){
return QrUtilHolder.instance;
} /**
* 执行 insert,delete,update
* @param sql
* @param params
* @return
*/
public int update(String sql, Object params[]) {
int i = -1; try {
i = qr.update(TransactionManager.getInstance().get(), sql, params);
} catch (SQLException ex) {
Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally{
TransactionManager.getInstance().close();
} return i;
} /**
* 执行多条的 insert,update
* @param sql
* @param params
* @return
*/
public int batch(String sql, Object params[][]) {
int i = -1; try {
i = qr.batch(TransactionManager.getInstance().get(), sql, params).length;
} catch (SQLException ex) {
Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally{
TransactionManager.getInstance().close();
} return i;
} /**
* 查询一个实体Bean,返回结果要进行强制类型转换
* @param sql
* @param params
* @param clazz
* @return
*/
public Object queryBean(String sql, Object params[], Class clazz) {
Object obj = null; try {
obj = qr.query(TransactionManager.getInstance().get(), sql, new BeanHandler(clazz), params);
} catch (SQLException ex) {
Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally{
TransactionManager.getInstance().close();
} return obj;
} /**
* 查询一个实体Bean Array,返回结果要进行强制类型转换
* @param sql
* @param params
* @param clazz
* @return
*/
public Object queryBeanList(String sql, Object params[], Class clazz) {
Object obj = null; try {
obj = qr.query(TransactionManager.getInstance().get(), sql, new BeanListHandler(clazz), params);
} catch (SQLException ex) {
Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally{
TransactionManager.getInstance().close();
} return obj;
} /**
* 获取一个Map
* @param sql
* @param params
* @return
*/
public Map<String, Object> queryMap(String sql, Object params[]) {
Map<String, Object> map = null; try {
map = qr.query(TransactionManager.getInstance().get(), sql, new MapHandler(), params);
} catch (SQLException ex) {
Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally{
TransactionManager.getInstance().close();
} return map;
} /**
* 获取List<Map<String,Object>>
* @param sql
* @param params
* @return
*/
public List<Map<String, Object>> queryListMap(String sql, Object params[]){
List<Map<String, Object>> list = null; try {
list = qr.query(TransactionManager.getInstance().get(), sql, new MapListHandler(), params);
} catch (SQLException ex) {
Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally{
TransactionManager.getInstance().close();
} return list;
} /**
* 进行查询操作,返回一个数值(一般用于select count(id) from table的处理)
* @param sql
* @param params
* @return
*/
public int queryForInt(String sql, Object params[]){
Object obj = null; try {
obj = qr.query(TransactionManager.getInstance().get(), sql, new ScalarHandler(), params);
} catch (SQLException ex) {
Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally{
TransactionManager.getInstance().close();
} return NumberUtils.stringToInt("" + obj, 0);
} /**
* 获取单列值
* @param sql
* @param params
* @return
*/
public List<String> queryListString(String sql, Object params[]) {
List<String> list = null; try {
list = qr.query(TransactionManager.getInstance().get(), sql, new ColumnListHandler<String>(1), params);
} catch (SQLException ex) {
Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally{
TransactionManager.getInstance().close();
} return list;
} }

使用方式:

public List<DjNsrxx> getDjNsrxxList(int count) {
sb.setLength(0);
sb.append(" select nsrdzdah,scjydz from gis_dj_nsrxx ")
.append(" where (lng is null or lat is null) and rownum<? "); Object params[] = {count}; return (List<DjNsrxx>) QrUtil.getInstance().queryBeanList(sb.toString(), params, DjNsrxx.class);
}

QuerryRunner Tools的更多相关文章

  1. 解决 Could not find com.android.tools.build:gradle 问题

    今天拉同事最新的代码,编译时老是报如下错误: Error:Could not find com.android.tools.build:gradle:2.2.0.Searched in the fol ...

  2. 免费的精品: Productivity Power Tools 动画演示

    Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率.它的出现一定程度上弥补和完善了 Visual Studio 自身的不足, ...

  3. 2.Kali安装VMware tools(详细+异常处理)

    dnt@MT:~$ cd /media/cdrom0 进入光驱内 dnt@MT:/media/cdrom0$ ls 查看当前目录下有哪些内容manifest.txt run_upgrader.sh V ...

  4. 第三篇:Entity Framework CodeFirst & Model 映射 续篇 EntityFramework Power Tools 工具使用

    上一篇 第二篇:Entity Framework CodeFirst & Model 映射 主要介绍以Fluent API来实作EntityFramework CodeFirst,得到了大家一 ...

  5. Chrome Developer Tools:Timeline Panel说明

    一.Timeline panel 概况 Timeline工具栏可以详细检测出Web应用在加载过程中,时间花费情况的概览.这些应用包括下载资源,处理DOM事件, 页面布局渲染或者向屏幕绘制元素. 如下图 ...

  6. linux-虚拟机centos6.5安装tools

    1.在VMWare选VM -> Install VMWare Tools-,就会在桌面出现VMWare Tools图示让你安裝 2.进入CentOS桌面后,将光盘打开,看到了VMWareTool ...

  7. VMWare Tools 和 Shared folder(共享文件夹)

    转自: http://www.51testing.com/html/38/225738-143732.html 使用vmwar下shared folders功能实现vmware中host与ghost间 ...

  8. 用hibernate tools生成对应的sql应用代码

    参考资料: eclipse在线配置hibernate tools http://jingyan.baidu.com/article/db55b609959d154ba20a2f5d.html [图]H ...

  9. 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools:

    jdk.tools:jdk.tools是与JDK一起分发的一个JAR文件,可以如下方式加入到Maven项目中:<dependency>    <groupId>jdk.tool ...

随机推荐

  1. DLL入门浅析(5)——使用DLL在进程间共享数据

    转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/21/90734.html 在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的 ...

  2. J - Borg Maze - poj 3026(BFS+prim)

    在一个迷宫里面需要把一些字母.也就是 ‘A’ 和 ‘B’连接起来,求出来最短的连接方式需要多长,也就是最小生成树,地图需要预处理一下,用BFS先求出来两点间的最短距离, *************** ...

  3. struts接收参数方式

    第一种,直接用action的属性接收,是初学者常用的方法. package com.starain.user; public class User{ private String username; ...

  4. QFII

    QFII(Qualified Foreign Institutional Investors)合格的境外机构投资者的英文简称,中文“酋匪”,QFII机制是指外国专业投资机构到境内投资的资格认定制度. ...

  5. 关于storm群集容错概念的简单介绍

    1.当一个worker死掉会发生什么?        当一个worker死掉,那么supervisor会重新启动这个worker.如果它总是启动失败将不能发送心跳到nimbus,那么nimbus将把这 ...

  6. atol字符串转换函数应用实例

    原型:long atol(const char *nptr); 相关函数 atoi,atol,strtod,strtol,strtoul 头文件:stdlib.h 功能:将字符串转换成整型数 说明:参 ...

  7. wxPython学习笔记(一)

    创建最小的空的wxPython程序 frame = wx.Frame(parent=None, title='Bare') frame.Show() return True app = App() a ...

  8. CTime,Systemtime的比较还有转换成日期格式。

    vc为我们提供了两种日期型的变量. 一种是CTime.他的缺点就是年份只支持到2038年,以后的日期就不支持啦,如果你的项目有20-30年的寿命,你就选择使用SYSTEMTIME.这个时间函数来进行比 ...

  9. Android Spinner列表选择框

    Spinner Spinner是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源. 1.直接设置数组源 在res/values/strings.xml中设置数组源 ...

  10. android api 中文 (73)—— AdapterView

    前言 本章内容是android.widget.AdapterView,版本为Android 2.3 r1,翻译来自"cnmahj",欢迎大家访问他的博客:http://androi ...