1. package com.ydbg.gis.utils;
  2.  
  3. import java.sql.SQLException;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.logging.Level;
  7. import java.util.logging.Logger;
  8. import org.apache.commons.dbutils.QueryRunner;
  9. import org.apache.commons.dbutils.handlers.BeanHandler;
  10. import org.apache.commons.dbutils.handlers.BeanListHandler;
  11. import org.apache.commons.dbutils.handlers.ColumnListHandler;
  12. import org.apache.commons.dbutils.handlers.MapHandler;
  13. import org.apache.commons.dbutils.handlers.MapListHandler;
  14. import org.apache.commons.dbutils.handlers.ScalarHandler;
  15. import org.apache.commons.lang.NumberUtils;
  16.  
  17. /**
  18. * @author y
  19. * @date 2015-5-10 10:43:04
  20. * @version V1.0
  21. * @desc QuerryRunner 工具类
  22. */
  23. public final class QrUtil {
  24.  
  25. private static final QueryRunner qr = new QueryRunner();
  26.  
  27. private static class QrUtilHolder{
  28. private static final QrUtil instance = new QrUtil();
  29. }
  30.  
  31. public static QrUtil getInstance(){
  32. return QrUtilHolder.instance;
  33. }
  34.  
  35. /**
  36. * 执行 insert,delete,update
  37. * @param sql
  38. * @param params
  39. * @return
  40. */
  41. public int update(String sql, Object params[]) {
  42. int i = -1;
  43.  
  44. try {
  45. i = qr.update(TransactionManager.getInstance().get(), sql, params);
  46. } catch (SQLException ex) {
  47. Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
  48. } finally{
  49. TransactionManager.getInstance().close();
  50. }
  51.  
  52. return i;
  53. }
  54.  
  55. /**
  56. * 执行多条的 insert,update
  57. * @param sql
  58. * @param params
  59. * @return
  60. */
  61. public int batch(String sql, Object params[][]) {
  62. int i = -1;
  63.  
  64. try {
  65. i = qr.batch(TransactionManager.getInstance().get(), sql, params).length;
  66. } catch (SQLException ex) {
  67. Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
  68. } finally{
  69. TransactionManager.getInstance().close();
  70. }
  71.  
  72. return i;
  73. }
  74.  
  75. /**
  76. * 查询一个实体Bean,返回结果要进行强制类型转换
  77. * @param sql
  78. * @param params
  79. * @param clazz
  80. * @return
  81. */
  82. public Object queryBean(String sql, Object params[], Class clazz) {
  83. Object obj = null;
  84.  
  85. try {
  86. obj = qr.query(TransactionManager.getInstance().get(), sql, new BeanHandler(clazz), params);
  87. } catch (SQLException ex) {
  88. Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
  89. } finally{
  90. TransactionManager.getInstance().close();
  91. }
  92.  
  93. return obj;
  94. }
  95.  
  96. /**
  97. * 查询一个实体Bean Array,返回结果要进行强制类型转换
  98. * @param sql
  99. * @param params
  100. * @param clazz
  101. * @return
  102. */
  103. public Object queryBeanList(String sql, Object params[], Class clazz) {
  104. Object obj = null;
  105.  
  106. try {
  107. obj = qr.query(TransactionManager.getInstance().get(), sql, new BeanListHandler(clazz), params);
  108. } catch (SQLException ex) {
  109. Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
  110. } finally{
  111. TransactionManager.getInstance().close();
  112. }
  113.  
  114. return obj;
  115. }
  116.  
  117. /**
  118. * 获取一个Map
  119. * @param sql
  120. * @param params
  121. * @return
  122. */
  123. public Map<String, Object> queryMap(String sql, Object params[]) {
  124. Map<String, Object> map = null;
  125.  
  126. try {
  127. map = qr.query(TransactionManager.getInstance().get(), sql, new MapHandler(), params);
  128. } catch (SQLException ex) {
  129. Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
  130. } finally{
  131. TransactionManager.getInstance().close();
  132. }
  133.  
  134. return map;
  135. }
  136.  
  137. /**
  138. * 获取List<Map<String,Object>>
  139. * @param sql
  140. * @param params
  141. * @return
  142. */
  143. public List<Map<String, Object>> queryListMap(String sql, Object params[]){
  144. List<Map<String, Object>> list = null;
  145.  
  146. try {
  147. list = qr.query(TransactionManager.getInstance().get(), sql, new MapListHandler(), params);
  148. } catch (SQLException ex) {
  149. Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
  150. } finally{
  151. TransactionManager.getInstance().close();
  152. }
  153.  
  154. return list;
  155. }
  156.  
  157. /**
  158. * 进行查询操作,返回一个数值(一般用于select count(id) from table的处理)
  159. * @param sql
  160. * @param params
  161. * @return
  162. */
  163. public int queryForInt(String sql, Object params[]){
  164. Object obj = null;
  165.  
  166. try {
  167. obj = qr.query(TransactionManager.getInstance().get(), sql, new ScalarHandler(), params);
  168. } catch (SQLException ex) {
  169. Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
  170. } finally{
  171. TransactionManager.getInstance().close();
  172. }
  173.  
  174. return NumberUtils.stringToInt("" + obj, 0);
  175. }
  176.  
  177. /**
  178. * 获取单列值
  179. * @param sql
  180. * @param params
  181. * @return
  182. */
  183. public List<String> queryListString(String sql, Object params[]) {
  184. List<String> list = null;
  185.  
  186. try {
  187. list = qr.query(TransactionManager.getInstance().get(), sql, new ColumnListHandler<String>(1), params);
  188. } catch (SQLException ex) {
  189. Logger.getLogger(QrUtil.class.getName()).log(Level.SEVERE, null, ex);
  190. } finally{
  191. TransactionManager.getInstance().close();
  192. }
  193.  
  194. return list;
  195. }
  196.  
  197. }

使用方式:

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

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. vim 插件

    自动补全插件更换:youcompleteme github:https://github.com/Valloric/YouCompleteMe

  2. Java:Date、Calendar、Timestamp的区别、相互转换与使用【转载】

    1 Java.util.Date 包含年.月.日.时.分.秒信息 包含年.月.日信息. 继承自java.util.Date.在数据库相关操作中使用,如rs.getDate,ps.setDate等.rs ...

  3. 火狐解决 OCSP 回应包含过期信息的问题_firefox吧_百度贴吧

    火狐解决 OCSP 回应包含过期信息的问题_firefox吧_百度贴吧 火狐解决 OCSP 回应包含过期信息的问题

  4. N - Marriage Match II - HDU 3081(最大流)

    题目大意:有一些男孩和女孩玩一个游戏,每个女孩都可以挑一个男孩来进行这个游戏(所有人都要参加),女孩只会挑选她喜欢的男孩,并且她们认为她们朋友喜欢的男孩她们也是喜欢的(朋友的男朋友也是我的男朋友??? ...

  5. GitHub for Mac

    GitHub for Mac 安装 1.从 mac.github.com 下载最新版本的 GitHub. 2.当你开启软件时,你可以选择用你的 GitHub 账户登录,或者新建一个账户. 3.在左侧, ...

  6. Kernel 4.9的BBR拥塞控制算法。

    重要的事情说三遍! BBR并不能突破带宽限制!!! BBR并不能突破带宽限制!!! BBR并不能突破带宽限制!!! 它的功能如下: 1.在高丢包率与低速率的网络中提升传输效果,充分利用带宽. 2.降低 ...

  7. VB编写的验证码生成器

    验证码(CAPTCHA)是“Completely AutomatedPublicTuring test to tell Computers andHumansApart”(全自动区分计算机和人类的图灵 ...

  8. Android消息机制(1)

    在Android中,线程内部或者线程之间进行信息交互时经常会使用消息,这些基础的东西如果我们熟悉其内部的原理,将会使我们容易.更好地架构系统,避免一些低级的错误.在学习Android中消息机制之前,我 ...

  9. OpenStack Neutron DVR L2 Agent的初步解析 (一)

    声明: 本博客欢迎转载,但请保留原作者信息! 作者:林凯 团队:华为杭州OpenStack团队 OpenStack Juno版本号已正式公布,这是这个开源云平台的10个版本号,在Juno版的Neutr ...

  10. Linux 磁盘挂载和mount共享

      针对Linux服务器的磁盘挂载mount和共享做简单操作说明: 1.  查看已使用的磁盘情况 df –h 2.  查看所有磁盘 fdisk –l 3.  查看指定磁盘“/dev/xvde”的分区情 ...