import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class JdbcUtils {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
protected JdbcTemplate jdbcTemplate;
// 分页sql前缀(适用于oracle)
public static final String PAGE_PREFIX = "select * from(select rownum r, ttt.* from(";
// 根据分页参数 组合分页sql后缀
public String getPAGE_SUFFIX(int page, int rows) {
return ") ttt ) where r > " + (page - 1) * rows + " and r <= " + page * rows;
}
// 组合后的分页sql
public String getPageSql(int page, int rows, String sql) {
return PAGE_PREFIX + sql + getPAGE_SUFFIX(page, rows);
}
// 查询数据条数sql
public String getPageCountSql(String sql) {
return " select count(0) from (" + sql + ")";
}
// 查询数据条数(有where参数条件)
public int queryForCount(String sql, Object... args) {
return jdbcTemplate.queryForInt(getPageCountSql(sql), args);
}
// 查询数据条数(无where参数条件)
public int queryForCount(String sql) {
return jdbcTemplate.queryForInt(getPageCountSql(sql));
}
// 查询List集合(无where参数条件)
public <T> List<T> queryForList(String sql, Class<T> clazz) {
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<T>(clazz));
}
// 查询List集合(有where参数条件)
public <T> List<T> queryForList(String sql, Class<T> clazz, Object... args) {
return jdbcTemplate.query(sql, args, new BeanPropertyRowMapper<T>(clazz));
}
// 查询List集合并封装,适用于easyui datagrid(无where参数条件)
public <T> JsonBean queryForList(String sql, Class<T> clazz, int page, int rows) {
JsonBean bean = new JsonBean();
int total = this.queryForCount(sql);
List<T> data_list = queryForList(getPageSql(page, rows, sql), clazz);
bean.setTotal(total);
bean.setRows(data_list);
return bean;
}
// 查询List集合并封装,适用于easyui datagrid(有where参数条件)
public <T> JsonBean queryForList(String sql, Class<T> clazz, int page, int rows, Object... args) {
JsonBean bean = new JsonBean();
int total = this.queryForCount(sql, args);
List<T> data_list = queryForList(getPageSql(page, rows, sql), clazz, args);
bean.setTotal(total);
bean.setRows(data_list);
return bean;
}
// 返回一个JavaBean(无where参数条件)
public <T> T queryForClass(String sql, Class<T> clazz) throws Exception {
List<T> t = queryForList(sql, clazz);
return t == null ? null : t.get(0);
}
// 返回一个JavaBean(有where参数条件)
public <T> T queryForClass(String sql, Class<T> clazz, Object... args) throws Exception {
List<T> t = queryForList(sql, clazz, args);
return t.isEmpty() ? null : t.get(0);
}
public int queryForInt(String sql, Object... args) {
return jdbcTemplate.queryForInt(sql, args);
}
public int queryForInt(String sql) {
return jdbcTemplate.queryForInt(sql);
}
public long queryForLong(String sql, Object... args) {
return jdbcTemplate.queryForLong(sql, args);
}
public int update(String sql, Object... args) {
return jdbcTemplate.update(sql, args);
}
public int delete(String sql) {
return jdbcTemplate.update(sql);
}
public <T> T queryForObject(String sql, Class<T> clazz, Object... args) {
try {
return jdbcTemplate.queryForObject(sql, clazz, args);
} catch (EmptyResultDataAccessException e) {
}
return null;
}
}
相关推荐
基于注解的Spring JdbcTemplate进一步增强了这种便利性,允许开发者直接在方法上使用注解来指定SQL语句。 ### 2. 注解使用 Spring JdbcTemplate的注解支持主要包含以下几个关键注解: - `@Query`: 用于定义SQL...
1. **JdbcTemplate对象**:这是Spring JdbcTemplate的核心,它包含了执行SQL语句的所有方法,如update()用于更新,query()用于查询,insert()用于插入等。 2. **参数绑定**:JdbcTemplate支持多种方式的参数绑定,...
spring JdbcTemplate query方法使用示例,欢迎下载借鉴
SpringJdbcTemplate是一个模板类,它提供了大量的方法来执行SQL查询、更新、存储过程等操作。这些方法会自动处理JDBC相关的资源关闭、异常转换等细节,使得代码更加整洁和健壮。 2. **数据库自适应** Spring...
在提供的文件列表中,`BaseDao.java`和`BaseDaoImpl.java`很可能是自定义的基类和实现类,用于封装JdbcTemplate的常用操作。BaseDao通常会定义一些基本的CRUD(创建、读取、更新、删除)方法,如`selectById(int id)...
4. 使用JdbcTemplate方法:调用JdbcTemplate的相应方法,如`update()`, `query()`, `execute()`等,传入SQL和参数。 5. 处理结果:根据操作类型,处理返回的结果集或者受影响的行数。 6. 事务管理:如果需要,可以...
在本教程中,我们将深入探讨Spring JdbcTemplate的常用方法,并介绍如何结合JUnit进行单元测试。 首先,`execute()`方法是JdbcTemplate的一个关键功能,它允许执行任意的SQL语句,包括DDL(数据定义语言)如创建表...
Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,...
Struts2、Spring和Spring JDBC Template是Java Web开发中常用的三个框架,它们分别负责不同的职责。Struts2作为MVC(Model-View-Controller)框架,主要处理前端请求和业务逻辑;Spring则是一个全面的后端框架,提供...
使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...
模仿spring jdbcTemplate的粗略实现,只有很小的参考价值,如果是java初学者可以使用这个封装好的工具进行数据库操作,只需要在db.properties里配置好driver,url等信息
Spring JdbcTemplate是Spring框架中的一个核心组件,主要用来简化数据库操作。它提供了一种模板方法设计模式,将SQL语句的执行与结果处理进行了抽象,使得开发者可以更加专注于业务逻辑,而无需关心底层数据访问的...
首先,Spring JdbcTemplate通过提供一系列的模板方法,如`queryForList`、`queryForObject`、`execute`等,使得执行SQL查询变得更加简洁和安全。这些方法能够处理结果集、自动转换数据类型,并且在发生异常时提供更...
在Spring框架中,JdbcTemplate是用于简化数据库操作的重要工具,它是Spring JDBC模块的一部分。通过使用JdbcTemplate,开发者可以避免编写大量的重复代码,如手动管理连接、处理结果集等,从而专注于业务逻辑。本文...
值得注意的是,虽然有文档提到`JdbcTemplate`提供了`execute(String sql, Object[] params)`方法,但实际上在Spring 2.x版本中并不存在这样的方法签名。 #### 批量更新 当需要进行批量更新操作时,`JdbcTemplate`...
在Spring框架中,`JdbcTemplate`是用于简化Java数据库连接(JDBC)操作的一个核心组件。这个类提供了很多方法来执行SQL查询、更新语句,包括批处理操作。本篇文章将详细探讨`batchUpdate`方法及其在实际开发中的应用...
JdbcTemplate是Spring JDBC模块的核心,它提供了一组模板方法,用于执行SQL查询、更新、插入和删除操作。通过使用这个模板类,开发者可以避免直接与JDBC API交互,从而减少错误并提高代码的可读性。它还支持事务管理...
Spring JDBCTemplate是Spring框架中的一个核心组件,它提供了一种简化数据库操作的抽象层,使得开发者可以更加方便、高效地处理数据库事务。本篇将深入探讨Spring JDBCTemplate的使用及其源码解析,帮助你理解其背后...
1.Spring4前 spring-jdbc包是独立的,4以后spring-jdbc 就已经没有了