package com.pk.xjgs.util;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List; 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.ScalarHandler; public class JDBCTemplate {
private QueryRunner queryRunner = new QueryRunner(); /**
* @param sql
* sql语句
* @param params
* 参数列表 按照sql中出现的顺序去写
* @return
* @function:处理增删改的sql语句的方法
*/
public int update(String sql, Object[] params) {
int i = 0;
Connection conn = null;
try {
conn = DBConn.getConn();
i = queryRunner.update(conn, sql, params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeConn(conn);
}
return i;
} /**
* @param sql
* @param params
* @return
* @function:执行批处理的方法
*/
public int[] bacth(String sql, Object[][] params) {
int[] i = null;
Connection conn = null;
try {
conn = DBConn.getConn();
i = queryRunner.batch(conn, sql, params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeConn(conn);
}
return i;
} /**
* @param sql
* @param params
* @param requiredType
* 返回的对象类
* @return 返回对象
* @function:返回对象的查询sql
*/
@SuppressWarnings("unchecked")
public Object queryForBean(String sql, Object[] params, Class requiredType) {
Object object = null;
Connection conn = null;
try {
conn = DBConn.getConn();
object = queryRunner.query(conn, sql,
new BeanHandler(requiredType), params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeConn(conn);
}
return object;
} /**
* @param sql
* @param params
* @param requiredType
* @return
* @function:返回对象的集合
*/
@SuppressWarnings("unchecked")
public List queryForBeanList(String sql, Object[] params, Class requiredType) {
Connection conn = null;
List list = null;
try {
conn = DBConn.getConn();
list = (List) queryRunner.query(conn, sql, new BeanListHandler(
requiredType), params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeConn(conn);
}
return list;
} /**
* @param sql
* @param params
* @param colName
* 要查询的字段的名字
* @return
*/
public Object queryForObject(String sql, Object[] params) {
Connection conn = null;
Object object = null;
try {
conn = DBConn.getConn();
object = queryRunner.query(conn, sql, new ScalarHandler(1),
params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeConn(conn);
}
return object;
} /**
* @param sql
* @param params
* @return
* @function:查询组函数的方法 比如 select count(id) from userinfo
*/
public int count(String sql, Object[] params) { Object o = queryForObject(sql, params);
if (o instanceof Integer) {
return (Integer) o;
}
if (o instanceof Long) {
Long l = (Long) o;
return l.intValue();
} String s = (String) o;
try {
return Integer.parseInt(s);
} catch (NumberFormatException e) {
return 0;
}
}
}

JDBCTemplate.java的更多相关文章

  1. SpringJDBC的JdbcTemplate在MySQL5.7下不支持子查询的问题

    org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [ SELECT ...

  2. JdbcTemplate源码解析

    先写一个测试代码 package jdbc; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Arr ...

  3. java.sql.SQLException: Field 'id' doesn't have a default value

    1:id 列要设置成自增,自动赋值 java.sql.SQLException: Field 'id' doesn't have a default value at com.mysql.jdbc.S ...

  4. spring jdbcTemplate 事务,各种诡异,包你醍醐灌顶!

    前言 项目框架主要是spring,持久层框架没有用mybtis,用的是spring 的jdbc: 业务需求:给应用添加领域(一个领域包含多个应用,一个应用可能属于多个领域,一般而言一个应用只属于一个领 ...

  5. Caused by: java.lang.InstantiationException: cn.at.bean.domain.ConstantInt

      org.springframework.jdbc.UncategorizedSQLException: ConnectionCallback; uncategorized SQLException ...

  6. 20. Spring Boot 默认、自定义数据源 、配置多个数据源 jdbcTemplate操作DB

    Spring-Boot-2.0.0-M1版本将默认的数据库连接池从tomcat jdbc pool改为了hikari,这里主要研究下hikari的默认配置 0.  创建Spring Boot项目,选中 ...

  7. java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解决方案

    导入commons-logging-1.2.jar辅助类包即可. 报错提示: Exception in thread "main" java.lang.NoClassDefFoun ...

  8. Java异常处理设计(二)

    考虑对JDK的底层堆栈信息进行处理,一种是重写JDK的Throwable,另一种是在原错误堆栈信息上进行“二次加工”.目前这两种方式我都实现了,效果非常好. 这篇文章主要记录对错误堆栈进行“二次加工” ...

  9. java.lang.IllegalStateException: Mapped class was not specified

    错误如下:java.lang.IllegalStateException: Mapped class was not specifiedat org.springframework.util.Asse ...

随机推荐

  1. CQRS学习——Dpfb以及其他[引]

    [Dpfb的起名源自:Ddd Project For Beginer,这个Beginer自然就是博主我自己了.请大家在知晓这是一个入门项目的事实上,怀着对入门者表示理解的心情阅读本系列.不胜感激.] ...

  2. BZOJ 3288 Mato矩阵 解题报告

    这个题好神呀..Orz taorunz 有一个结论,这个结论感觉很优美: $$ans = \prod_{i=1}^{n}\varphi(i)$$ 至于为什么呢,大概是这样子的: 对于每个数字 $x$, ...

  3. BZOJ 1741: [Usaco2005 nov]Asteroids 穿越小行星群

    Description 贝茜想驾驶她的飞船穿过危险的小行星群.小行星群是一个NxN的网格(1≤N≤500),在网格内有K个小行星(1≤K≤10000). 幸运地是贝茜有一个很强大的武器,一次可以消除所 ...

  4. [转载]c# winform 获取当前程序运行根目录

    // 获取程序的基目录. System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径. System.Diagnostics.Process.G ...

  5. C#跳出循环的几种方法的区别

    break是循环结束执行,执行循环体后面的代码. continue是跳过本次循环未执行的代码,继续执行下一次循环. goto是跳到指定的指令去,你指哪,他跳到哪. return是函数返回,如果循环在M ...

  6. 团体程序设计天梯赛-练习集L1-003. 个位数统计

    L1-003. 个位数统计 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个k位整数N = dk-1*10k-1 + . ...

  7. Tornado,了解一下

    多了解不一样的PYTHON框架,对深入了解DJANGO,总是有帮助的. import textwrap import tornado.httpserver import tornado.ioloop ...

  8. IOS - IOS之同步请求、异步请求、GET请求、POST请求

    1.同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2.异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然 ...

  9. yii执行原理

    应用执行流程: 浏览器向服务器发送 Http Request | 控制器(protected/controllers) | |---> Action | 创建模型 (Model) | 检查$_P ...

  10. 绕过图片格式限制上传木马获取WebShell

    思路: 图片上传功能中,前端页面上传的是.png格式的图片文件,但是抓包Request中修改图片后缀为.php 可以绕过对上传文件格式的限制,文件的上传路径可以在上传后的页面或查看上传成功后的resp ...