Spring中的JDBC模块很好的封装了JDBC操作,将我们从繁琐的try-catch-finally-try-catch里解脱出来。但是用过JdbcTemplate很快就发现它的queryForObject方法在查询结果为空的时候不是返回null,而是抛出一个EmptyResultDataAccessException。
原来在所有的JdbcTemplate中的queryForObject方法都是类似这样
public Object queryForObject(String sql, RowMapper rowMapper)
throws DataAccessException {
List results = query(sql, rowMapper);
return DataAccessUtils.requiredSingleResult(results);
}
这里调用的是org.springframework.dao.support.DataAccessUtils里的静态方法requriedSingleResult,这个方法的定义即是在结果数大于1的时候抛出IncorrectResultSizeDataAccessException,在结果数为0的时候EmptyResultDataAccessException。
在org.springframework.dao.support.DataAccessUtils里其实还有一个方法叫singleResult。它在结果数为零的时候会返回null,其他定义和requriedSingleResult是一样的。
但是我发现所有JdbcTemplate中使用的都是requriedSingleResult这一方法。这样在使用的时候不得不预先用COUNT先算一下有没有结果,或者就是加上try-catch。总之在我看来这里用try-catch是不太合适的,起码是不完美的。
另外新的SimpleJdbcTemplate只是在JdbcTemplate上封装了Java5的新功能泛型和注释,本身还是调用JdbcTemplate,在这个问题上也没有帮助。
不知道 Rod Johnson ,Juergen Hoeller,Thomas Risberg三位作者在这个问题上是怎么想的。
分享到:
相关推荐
综上所述,`springjdbc.zip`文件中的示例可能展示了如何在Spring环境中配置和使用JDBC,包括数据源配置、事务管理、以及使用`JdbcTemplate`执行增删改查操作的完整流程。通过学习这些示例,开发者可以更好地理解和...
Spring JDBC是Spring框架中的一个核心模块,主要用于简化Java数据库编程。在本文中,我们将深入探讨Spring JDBC的应用实例,了解如何利用它来实现高效且灵活的数据访问。首先,我们需要理解Spring JDBC是如何通过...
6. **异常处理**:`JdbcTemplate`将JDBC抛出的异常转换为Spring的`DataAccessException`系列异常,这些异常具有更好的语义,便于开发人员理解问题所在。 7. **存储过程**:通过`call`方法,`JdbcTemplate`也可以...
本篇文章将深入探讨如何使用Spring JDBC在Spring 2.5版本中与MySQL数据库进行交互,包括编程式事务处理。 首先,让我们了解Spring JDBC的基础。Spring JDBC提供了一个JdbcTemplate类,它是对JDBC API的抽象,它通过...
Spring JDBC是Spring框架的一部分,它提供了一种抽象层,使得我们能够更方便地使用Java数据库连接(JDBC)来处理数据库操作,如增删改查...结合良好的事务管理和异常处理机制,Spring JDBC成为了Java开发中的重要组件。
在Java的Spring框架中,Spring JDBC(Java Database Connectivity)是一个重要的模块,用于简化数据库操作。Spring JDBC通过提供JdbcTemplate和SimpleJdbcTemplate等工具类,帮助开发者以更安全、更易于管理的方式与...
在Spring框架中,Spring JDBC通过提供一个抽象层,使得开发者可以更方便地执行SQL查询,处理结果集,以及管理事务。下面将详细阐述两种在Spring中测试JDBC的方法。 ### 方法一:基于`JdbcTemplate` `JdbcTemplate`...
6. **错误处理**:Spring的JDBC抽象层处理了许多底层的错误,比如关闭资源等,这使得代码更加健壮,避免了常见的数据库连接泄漏问题。 7. **DataSource配置**:在Spring中,我们需要配置一个DataSource,它是数据库...
(1)使用Spring JDBC实现书店的购书过程,即有如下一个BookShopDao接口,编写BookShopDaoImp类实现该接口中的所有方法,并通过JUnit测试这些方法。 public interface BookShopDao { //根据书号获取书的单价 //...
在现代项目中,通常使用Maven或Gradle作为构建工具,只需在pom.xml或build.gradle文件中添加Spring JDBC的依赖。对于Maven,可以添加以下依赖: ```xml <groupId>org.springframework <artifactId>spring-jdbc ...
"spring封装jdbc查询"是Spring框架中的一个核心功能,旨在简化传统的JDBC(Java Database Connectivity)操作,提高代码的可读性和可维护性,同时减少数据库操作中的潜在错误。以下是对这个主题的详细阐述: 首先,...
在压缩包中的"复件 SpringJDBC"文件可能包含一个简单的Spring整合JDBC的示例。代码可能包括了配置文件、实体类、DAO接口和其实现。例如,创建一个UserDao接口,使用JdbcTemplate进行用户查询: ```java public ...
本篇文章将详细探讨Spring 4.x中JDBC(Java Database Connectivity)的起步知识。 一、Spring JDBC简介 Spring JDBC模块是Spring框架的一部分,它简化了数据库访问,提供了高级抽象层,避免了直接编写繁琐的JDBC...
Spring JDBC将数据库抛出的原始JDBC异常转换为Spring的`DataAccessException`层次结构,这使得异常处理更加统一,也更易于理解问题的根源。 6. **批处理** 如果需要执行大量相似的SQL语句,Spring JDBC的`...
JdbcTemplate是Spring框架的一部分,它通过提供一套模板方法,简化了常见的JDBC操作,如执行SQL语句、处理结果集等。它帮助开发者避免了繁琐的JDBC代码,如连接管理、事务处理和异常处理,提高了代码的可读性和可...
在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,需要在 `build.gradle` 文件中添加 Oracle JDBC ...
在Java世界中,Spring框架是应用最广泛的轻量级开源框架之一,它为开发者提供了许多便利,其中之一就是Spring JDBC模块。这个模块使得处理数据库操作变得更加简单,无需直接与JDBC API打交道,从而减少了代码量,...
标题中的“spring3.1 mvc jdbc 合成”指的是在Spring 3.1版本中,如何集成使用Spring MVC框架和JDBC进行数据访问的技术。Spring MVC是Spring框架的一个核心模块,用于构建Web应用程序,而JDBC(Java Database ...
在提供的`sharding-jdbc-demo-5.2.0`压缩包中,包含了完整的代码示例、文档和注释,可以帮助你更好地理解和实践Spring Boot与ShardingSphere的整合。通过这个示例,你可以深入了解如何在实际项目中运用...
Spring JDBC 具名参数使用方法详解 作为一个专业的 IT 行业大师,我将详细解释 Spring JDBC 具名参数使用方法的知识点。 什么是具名参数? 在 JDBC 中,参数可以使用两种方式,分别是无参数和具名参数。无参数是...