Spring的JdbcTemplate把Jdbc进行了封装,下面我们来看一下它的query(String sql,RowMapper rowMapper);的具体实现。
首先,query方法会调用下面一段代码:
public List query(String sql, RowMapper rowMapper) throws DataAccessException {
return (List) query(sql, new RowMapperResultSetExtractor(rowMapper));
}
我们发现,Spring把调用的请求交给了一个更为抽象的query方法,而且更重要的是new RowMapperResultSetExtractor(rowMapper),将rowMapper交给了一个专门处理结果集的类。
那下面让我们看看这个更为抽象的query方法到底干了什么
public Object query(final String sql, final ResultSetExtractor rse) throws DataAccessException {
Assert.notNull(sql, "SQL must not be null");
Assert.notNull(rse, "ResultSetExtractor must not be null");
if (logger.isDebugEnabled()) {
logger.debug("Executing SQL query [" + sql + "]");
}
class QueryStatementCallback implements StatementCallback, SqlProvider {
public Object doInStatement(Statement stmt) throws SQLException {
ResultSet rs = null;
try {
rs = stmt.executeQuery(sql);
ResultSet rsToUse = rs;
if (nativeJdbcExtractor != null) {
rsToUse = nativeJdbcExtractor.getNativeResultSet(rs);
}
return rse.extractData(rsToUse);
}
finally {
JdbcUtils.closeResultSet(rs);
}
}
public String getSql() {
return sql;
}
}
return execute(new QueryStatementCallback());
}
它主要的工作是通过一个内部类实现的,内部类首先执行用户传入的sql语句,得到结果集然后调用
ResultSetExtractor 类的extractData()方法得到处理之后的结果集,其实就是一个List集合。
分享到:
相关推荐
spring JdbcTemplate query方法使用示例,欢迎下载借鉴
本篇文章将深入探讨Spring Boot中使用`@Query`注解进行自定义查询的方法,包括Spring Data JPA和Template两种模式。 首先,让我们了解Spring Data JPA。这是一个强大的ORM(对象关系映射)框架,它简化了与数据库的...
本篇文章将深入探讨如何使用Spring的JDBC模块,特别是`update`和`query`方法来执行数据库的更新与查询操作。我们将围绕以下几个关键知识点展开: 1. **Spring JDBC模块**:Spring JDBC是Spring框架的一部分,它简化...
本文将深入探讨Spring JdbcTemplate的常用方法,并结合提供的`JsonBean.java`和`JdbcUtils.java`文件,来理解其在实际应用中的使用。 首先,JdbcTemplate的核心功能在于它提供了一系列的方法来执行SQL语句,包括...
3. **Query Methods**:Spring Data JPA 支持通过方法名自动转换为 JPA 查询。例如,`findAll()` 会执行一个 SELECT ALL 查询,`findByLastname(String lastname)` 会根据指定的姓氏查找用户。此外,还可以使用注解 ...
Spring 框架 JdbcTemplate 类中查询方法介绍 JdbcTemplate 是 Spring 框架中 org.springframework.jdbc.core 包提供的 JDBC 模板类,它是核心类,其他模板类都是基于它封装完成的。JdbcTemplate 类主要提供四类方法...
在`queryData`方法中,你可以通过数据库查询语句(如SQL)获取数据,然后将结果放入`Model`对象中,最后返回一个视图名称,Spring MVC会自动解析这个名称并加载对应的HTML模板显示结果。对于`deleteData`方法,执行...
- **Spring Data MongoDB** 支持多种类型的查询方法,包括但不限于: - **基本查询**: 如 `findAll()`, `findById()`, `save()`, `deleteById()` 等。 - **条件查询**: 通过方法名称指定查询条件,如 `...
通过Spring Data JPA,我们可以在Repository接口中定义方法,而无需手动编写DAO层的实现。Spring Data会自动解析这些方法名并生成相应的查询语句。 当我们遇到复杂查询,或者需要执行非标准的SQL或HQL时,`@Query`...
在IT行业中,SpringMVC和QueryRunner是两个非常重要的组件,它们在开发Web应用程序时起着关键作用。本文将深入探讨这两个技术,并结合"自动生成"这一概念,讲解如何利用它们构建高效的数据访问层。 首先,SpringMVC...
在学习Spring框架与Hibernate集成的过程中,掌握HQL(Hibernate Query Language)的使用方法是十分重要的。本文档将详细介绍如何在Spring环境中运用HQL进行数据查询操作,包括基本查询、参数绑定以及命名查询等高级...
5. 尚硅谷_SpringData_Query注解 6. 尚硅谷_SpringData_Modifying注解 7. 尚硅谷_SpringData_CrudRepository接口 8. 尚硅谷_SpringData_PagingAndSortingRespository接口 9. 尚硅谷_SpringData_JpaRepository接口 10...
在本资源中,我们主要探讨的是Spring JDBC模块,它简化了Java Database Connectivity (JDBC)的使用,使得在Spring应用程序中进行数据库交互变得更加简单和易于管理。下面将详细阐述Spring JDBC的关键概念、核心组件...
该项目为基于Spring Data JPA Query Methods理念的Mybatis查询方法实现,包含122个文件,其中Java源文件102个,XML配置文件16个,其他文件类型包括gitignore、LICENSE、md、Processor等。该项目旨在提供一种类似...
Spring Data JPA支持组合多个Repository的查询,通过`@RepositoryDefinition`和`@Query`注解,可以在一个接口中定义多个Repository的查询方法。 **9. 自定义存储过程** Spring Data JPA也支持调用数据库存储过程,...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
在IT行业中,Hibernate、Spring和Hibernate Annotations是三个非常重要的框架,尤其在Java企业级应用开发中扮演着核心角色。这些框架极大地简化了数据库操作、对象关系映射(ORM)以及应用程序的依赖注入和管理。 ...
5. **JPQL和Hibernate HQL**:虽然Spring Data JPA可以自动生成查询,但有时仍需手动编写JPQL(Java Persistence Query Language)或Hibernate HQL(Hibernate Query Language)来完成复杂查询。 6. **Auditing**:...
Spring Data JPA是Java开发中的一个关键框架,它简化了与关系型数据库的交互,特别是基于Java Persistence API (JPA)。这个框架是Spring生态系统的组成部分,为开发者提供了声明式数据访问的方式,允许通过简单的...
### Spring框架中HQL查询方法详解 在Spring框架与Hibernate技术结合使用时,HQL(Hibernate Query Language)作为对象查询语言被广泛应用于数据查询操作之中。本文将详细解析Spring框架中常用的HQL查询方法及其应用...