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. Atmel Studio 6.0 重新安装

    问题描述:        Atmel Studio 6.0 重新安装     在卸载Atmel Studio6.0之后,重新安装Atmel Studio6.0软件,提示cannot find one ...

  2. PAT-乙级-1018. 锤子剪刀布 (20)

    1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...

  3. 团体程序设计天梯赛-练习集L2-004. 这是二叉搜索树吗

    L2-004. 这是二叉搜索树吗? 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一棵二叉搜索树可被递归地定义为具有下列性质的 ...

  4. JAVA面试题:equals()方法和== 区别

    http://bbs.csdn.net/topics/390000725 总结: equals在没重写之前和==一样,重写之后,equals只要内容一样即为true equals跟==一般情况下是等价 ...

  5. HDU 1422 重温世界杯(DP)

    点我看题目 题意 : 中文题不详述. 思路 : 根据题目描述及样例可以看出来,如果你第一个城市选的是生活费减花费大于等于0的时候才可以,最好是多余的,这样接下来的就算是花超了(一定限度内的花超),也可 ...

  6. thinkphp 定制错误页面

    在前台配置文件里加上: 'TMPL_EXCEPTION_FILE' => '.Public/tpl/error.html',// 异常cuowu页面的模板文件 然后在Public下新建一个tpl ...

  7. Nginx、LVS及HAProxy负载均衡软件的优缺点详解

    http://www.csdn.net/article/2014-07-24/2820837

  8. *IntelliJ idea创建创建Maven管理的Java Web项目

    配置IntelliJ在IntelliJ的设置中,可以设置maven的安装目录,settings.xml文件的位置,和本地仓库的位置等信息.

  9. Android安装常见问题

    在初次运行Android程序的时候会出现类似的错误,导致程序无法继续运行,如下面的几个例子: 问题1:PC安卓模拟器 PANIC: Could not open: C:\Documents and S ...

  10. 转:JS日期加减,日期运算

    原文 出处http://hi.baidu.com/tonlywang/item/685fba8933a2a756e73d1950 一.日期减去天数等于第二个日期 function cc(dd,dadd ...