`
littie1987
  • 浏览: 133322 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Spring中的query方法

 
阅读更多

    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 JdbcTemplate query方法使用示例,欢迎下载借鉴

    spring boot query查询

    本篇文章将深入探讨Spring Boot中使用`@Query`注解进行自定义查询的方法,包括Spring Data JPA和Template两种模式。 首先,让我们了解Spring Data JPA。这是一个强大的ORM(对象关系映射)框架,它简化了与数据库的...

    基于Spring-jdbc-update、query方法操作数据库

    本篇文章将深入探讨如何使用Spring的JDBC模块,特别是`update`和`query`方法来执行数据库的更新与查询操作。我们将围绕以下几个关键知识点展开: 1. **Spring JDBC模块**:Spring JDBC是Spring框架的一部分,它简化...

    Spring JdbcTemplate 常用方法整理

    本文将深入探讨Spring JdbcTemplate的常用方法,并结合提供的`JsonBean.java`和`JdbcUtils.java`文件,来理解其在实际应用中的使用。 首先,JdbcTemplate的核心功能在于它提供了一系列的方法来执行SQL语句,包括...

    Spring Data JPA中文文档[1.4.3]_springdatajpa_erlang_waitxpf_

    3. **Query Methods**:Spring Data JPA 支持通过方法名自动转换为 JPA 查询。例如,`findAll()` 会执行一个 SELECT ALL 查询,`findByLastname(String lastname)` 会根据指定的姓氏查找用户。此外,还可以使用注解 ...

    Spring框架JdbcTemplate类中查询方法介绍

    Spring 框架 JdbcTemplate 类中查询方法介绍 JdbcTemplate 是 Spring 框架中 org.springframework.jdbc.core 包提供的 JDBC 模板类,它是核心类,其他模板类都是基于它封装完成的。JdbcTemplate 类主要提供四类方法...

    利用Spring中的多方法控制器实现数据查询和删除操作

    在`queryData`方法中,你可以通过数据库查询语句(如SQL)获取数据,然后将结果放入`Model`对象中,最后返回一个视图名称,Spring MVC会自动解析这个名称并加载对应的HTML模板显示结果。对于`deleteData`方法,执行...

    Spring Data MongoDB中文文档

    - **Spring Data MongoDB** 支持多种类型的查询方法,包括但不限于: - **基本查询**: 如 `findAll()`, `findById()`, `save()`, `deleteById()` 等。 - **条件查询**: 通过方法名称指定查询条件,如 `...

    SpringData@Query的注释的代码实现

    通过Spring Data JPA,我们可以在Repository接口中定义方法,而无需手动编写DAO层的实现。Spring Data会自动解析这些方法名并生成相应的查询语句。 当我们遇到复杂查询,或者需要执行非标准的SQL或HQL时,`@Query`...

    springmvc+queryrunner自动生成

    在IT行业中,SpringMVC和QueryRunner是两个非常重要的组件,它们在开发Web应用程序时起着关键作用。本文将深入探讨这两个技术,并结合"自动生成"这一概念,讲解如何利用它们构建高效的数据访问层。 首先,SpringMVC...

    Spring中hql语句的常用方法

    在学习Spring框架与Hibernate集成的过程中,掌握HQL(Hibernate Query Language)的使用方法是十分重要的。本文档将详细介绍如何在Spring环境中运用HQL进行数据查询操作,包括基本查询、参数绑定以及命名查询等高级...

    SpringData视频教学

    5. 尚硅谷_SpringData_Query注解 6. 尚硅谷_SpringData_Modifying注解 7. 尚硅谷_SpringData_CrudRepository接口 8. 尚硅谷_SpringData_PagingAndSortingRespository接口 9. 尚硅谷_SpringData_JpaRepository接口 10...

    spring中jdbc的操作

    在本资源中,我们主要探讨的是Spring JDBC模块,它简化了Java Database Connectivity (JDBC)的使用,使得在Spring应用程序中进行数据库交互变得更加简单和易于管理。下面将详细阐述Spring JDBC的关键概念、核心组件...

    基于Spring Data JPA Query Methods思想的Mybatis查询方法实现源码

    该项目为基于Spring Data JPA Query Methods理念的Mybatis查询方法实现,包含122个文件,其中Java源文件102个,XML配置文件16个,其他文件类型包括gitignore、LICENSE、md、Processor等。该项目旨在提供一种类似...

    Spring data jpa 中文开发文档

    Spring Data JPA支持组合多个Repository的查询,通过`@RepositoryDefinition`和`@Query`注解,可以在一个接口中定义多个Repository的查询方法。 **9. 自定义存储过程** Spring Data JPA也支持调用数据库存储过程,...

    Spring中文帮助文档

    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...

    hibernate annotation spring 中文参考文档

    在IT行业中,Hibernate、Spring和Hibernate Annotations是三个非常重要的框架,尤其在Java企业级应用开发中扮演着核心角色。这些框架极大地简化了数据库操作、对象关系映射(ORM)以及应用程序的依赖注入和管理。 ...

    Spring Data JPA中文文档[1.4.3]

    5. **JPQL和Hibernate HQL**:虽然Spring Data JPA可以自动生成查询,但有时仍需手动编写JPQL(Java Persistence Query Language)或Hibernate HQL(Hibernate Query Language)来完成复杂查询。 6. **Auditing**:...

    Spring Data JPA中文文档[1.4.3].zip

    Spring Data JPA是Java开发中的一个关键框架,它简化了与关系型数据库的交互,特别是基于Java Persistence API (JPA)。这个框架是Spring生态系统的组成部分,为开发者提供了声明式数据访问的方式,允许通过简单的...

    Spring中常用的hql查询方法

    ### Spring框架中HQL查询方法详解 在Spring框架与Hibernate技术结合使用时,HQL(Hibernate Query Language)作为对象查询语言被广泛应用于数据查询操作之中。本文将详细解析Spring框架中常用的HQL查询方法及其应用...

Global site tag (gtag.js) - Google Analytics