JDBCTemplate.java
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的更多相关文章
- SpringJDBC的JdbcTemplate在MySQL5.7下不支持子查询的问题
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [ SELECT ...
- JdbcTemplate源码解析
先写一个测试代码 package jdbc; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Arr ...
- 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 ...
- spring jdbcTemplate 事务,各种诡异,包你醍醐灌顶!
前言 项目框架主要是spring,持久层框架没有用mybtis,用的是spring 的jdbc: 业务需求:给应用添加领域(一个领域包含多个应用,一个应用可能属于多个领域,一般而言一个应用只属于一个领 ...
- Caused by: java.lang.InstantiationException: cn.at.bean.domain.ConstantInt
org.springframework.jdbc.UncategorizedSQLException: ConnectionCallback; uncategorized SQLException ...
- 20. Spring Boot 默认、自定义数据源 、配置多个数据源 jdbcTemplate操作DB
Spring-Boot-2.0.0-M1版本将默认的数据库连接池从tomcat jdbc pool改为了hikari,这里主要研究下hikari的默认配置 0. 创建Spring Boot项目,选中 ...
- java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解决方案
导入commons-logging-1.2.jar辅助类包即可. 报错提示: Exception in thread "main" java.lang.NoClassDefFoun ...
- Java异常处理设计(二)
考虑对JDK的底层堆栈信息进行处理,一种是重写JDK的Throwable,另一种是在原错误堆栈信息上进行“二次加工”.目前这两种方式我都实现了,效果非常好. 这篇文章主要记录对错误堆栈进行“二次加工” ...
- java.lang.IllegalStateException: Mapped class was not specified
错误如下:java.lang.IllegalStateException: Mapped class was not specifiedat org.springframework.util.Asse ...
随机推荐
- zepto点击事件兼容pc和mobile
判断pc还是mobile,重写click事件 var CLICK='click'; (function browserRedirect() { var sUserAgent = navigator.u ...
- 转Spring+Hibernate+EHcache配置(二)
Spring AOP+EHCache简单缓存系统解决方案 需要使用Spring来实现一个Cache简单的解决方案,具体需求如下:使用任意一个现有开源Cache Framework,要求可以Cache系 ...
- Delphi里的RTTI与反射(举例换掉FOnChange)
Delphi2010之后的RTTI做了很大休整,现在用起来很爽了哦.甚至可以获取某些类的内部私有单元,然后为其赋值!讲这个RTTI增强的,可以参考网上的多个博客内容,我列举一下:Delphi2010R ...
- Maven中聚合与继承
何为继承? --继承为了消除重复,我们把很多相同的配置提取出来 --例如:grouptId,version等 就像写java程序一样,对于有共性切重复的东西,就提取出来. 如有三个pom.xml配 ...
- POJ3687——Labeling Balls(反向建图+拓扑排序)
Labeling Balls DescriptionWindy has N balls of distinct weights from 1 unit to N units. Now he tries ...
- 如何利用python使用libsvm
一:libsvm包下载与使用: LIBSVM是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单.易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在 ...
- [原]捉虫记3:_ConectionPtr指针调用open失败
背景 产品使用MySQL来存储报警服务产生的报警.在报警服务的组件中使用ADO接口 客户方有两台计算机,一台计算机A用来组态,且可以对设备进行调试,操作系统是Win7 64bit 专业版,安装了VS2 ...
- ajax返回son数据
JSON 只是一种文本字符串.它被存储在 responseText 属性中 为了读取存储在 responseText 属性中的 JSON 数据,需要根据 JavaScript 的 eval 语句. 函 ...
- ↗☻【编写可维护的JavaScript #BOOK#】第4章 变量、函数和运算符
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- 《C#并行编程高级教程》第9章 异步编程模型 笔记
这个章节我个人感觉意义不大,使用现有的APM(异步编程模型)和EAP(基于时间的异步模型)就很够用了,针对WPF和WinForm其实还有一些专门用于UI更新的类. 但是出于完整性,还是将一下怎么使用. ...