Spring3 Mybatis 异常处理
通常在 Dao 层将所有异常都转嫁到 Spring 的 RuntimeException 体系中来 -DataAccessException
Spring的DAO框架没有抛出与特定技术相关的异常,例如SQLException或HibernateException,抛出的异常都是与特定技术无关的org.springframework.dao.DataAccessException类的子类,避免系统与某种特殊的持久层实现耦合在一起。DataAccessException是RuntimeException,是一个无须检测的异常,不要求代码去处理这类异常,遵循了Spring的一般理念:异常检测会使代码到处是不相关的catch或throws语句,使代码杂乱无章;并且NestedRuntimeException的子类,是可以通过NestedRuntimeException的getCause()方法获得导致该异常的另一个异常。Spring的异常分类有
异常 |
何时抛出 |
CleanupFailureDataAccessException | 一项操作成功地执行,但在释放数据库资源时发生异常(例如,关闭一个Connection) |
DataAccessResourceFailureException | 数据访问资源彻底失败,例如不能连接数据库 |
DataIntegrityViolationException | Insert或Update数据时违反了完整性,例如违反了惟一性限制 |
DataRetrievalFailureException | 某些数据不能被检测到,例如不能通过关键字找到一条记录 |
DeadlockLoserDataAccessException | 当前的操作因为死锁而失败 |
IncorrectUpdateSemanticsDataAccessException | Update时发生某些没有预料到的情况,例如更改超过预期的记录数。当这个异常被抛出时,执行着的事务不会被回滚 |
InvalidDataAccessApiusageException | 一个数据访问的JAVA API没有正确使用,例如必须在执行前编译好的查询编译失败了 |
invalidDataAccessResourceUsageException | 错误使用数据访问资源,例如用错误的SQL语法访问关系型数据库 |
OptimisticLockingFailureException | 乐观锁的失败。这将由ORM工具或用户的DAO实现抛出 |
TypemismatchDataAccessException | Java类型和数据类型不匹配,例如试图把String类型插入到数据库的数值型字段中 |
UncategorizedDataAccessException | 有错误发生,但无法归类到某一更为具体的异常中 |
Spring的DAO异常层次是如此的细致缜密,服务对象能够精确地选择需要捕获哪些异常,捕获的异常对用户更有用的信息,哪些异常可以让她继续在调用堆栈中向上传递。
于是,我们在dao中只需要抛出这个运行时异常,我们就可以在
- /**
- * 根据时间获取日KPI数据
- * @param date 日期
- * @return
- */
- public List<KPIDataBean> getKPIOfDayDataByDate(String date) throws DataAccessException;
并在它的实现类中也抛出这么个异常。
这样,在调用这个方法的时候,我们捕获这个异常即可:
- try {
- list = kpiDao.getKPIOfDayDataByDate(date);
- } catch(DataAccessException e) {
- System.out.println("test:" + e.getMessage());
- }
这样就可以捕获相应的异常了。
这是打印出来的信息
test:nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failure
相关推荐
3. **异常处理**:Spring框架中的异常处理机制可以很好地与iBATIS相结合,统一处理数据库操作过程中可能出现的各种异常情况。 4. **DAO支持**:Spring为DAO(Data Access Object)提供了丰富的支持,包括DAO抽象层...
由于配置了事务管理,当出现异常时,Spring会自动回滚事务。 ```java @Service public class UserService { @Autowired private UserMapper userMapper; @Transactional public void addUser(User user) {...
在IT行业中,Spring框架与iBatis(现为MyBatis)是两个广泛使用的开源工具,主要用于构建企业级Java应用程序。本示例“spring+ibatis声明式事务Demo”将探讨如何在Spring与iBatis集成环境中使用声明式事务管理。声明...
根据提供的文件信息,本文将详细解析Spring与iBatis整合时如何保留并使用iBatis事务管理机制,以及如何在应用程序中实现手动控制事务的方法。 ### Spring与iBatis整合 Spring框架是一个全面的企业级应用开发框架,...
Struts2、Spring和iBatis是Java Web开发中非常流行的三大开源框架,它们各司其职,共同构建了一个高效且灵活的应用架构。Struts2作为MVC框架负责控制流程,Spring提供依赖注入(DI)和面向切面编程(AOP),以及强大...
Spring通过其内置的支持机制极大地简化了原有的IBatis访问代码,并且提供了与JdbcTemplate一致的异常处理方式。这种整合不仅提高了开发效率,还增强了代码的健壮性和可维护性。 #### 二、Spring提供的IBatis辅助类 ...
Struts2、Spring和iBatis是Java Web开发中经典的三大框架,它们组合起来可以构建出高效、可维护的企业级应用程序。本项目旨在为初学者提供一个基础的入门指南,帮助理解并掌握这三个框架的集成与使用,实现CRUD...
### Spring与iBatis整合学习笔记 #### 一、目的 本文档旨在展示如何在数据库层面上使用iBatis与Spring进行整合。数据库编程通常涉及数据库连接、连接池、SQL语句、输入输出以及事务处理等内容。Java JDBC作为低...
这样,一旦发生异常,Spring会自动回滚事务,保证数据一致性。 最后,关于Spring与Struts2的集成。Spring作为应用框架,负责依赖注入和事务管理;Struts2则作为MVC框架,处理请求和视图。结合Ibatis,我们可以创建...
Struts1.2、Spring2和iBatis是经典的Java Web开发框架,它们的集成可以构建出高效、灵活的企业级应用程序。在这个项目实战源码中,我们可以深入学习这三大框架如何协同工作,以及如何在实际开发中应用它们。 首先,...
开发者可以在自定义的DAO层方法中使用它,执行SQL语句,无需关心SqlSession的开启、关闭和异常处理。 2. SqlSessionDaoSupport:这是一个抽象类,为DAO提供了一个SqlSessionTemplate实例,继承自它,只需专注于业务...
"Struts2+Spring+Ibatis+MySQL" 是一个经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。这个组合集成了强大的MVC(Model-View-Controller)框架Struts2、依赖注入与面向切面编程的Spring框架、...
Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。这个压缩包文件提供的是一种经典的整合使用这三个框架的案例,用于实现一个基础的CRUD...
这种方式的优点在于,Spring可以帮助管理事务,提供统一的异常处理,而iBatis则负责SQL的执行,两者结合可以避免直接使用JDBC时的繁琐代码。 在实际开发中,还可以考虑使用MyBatis的动态SQL功能,如if标签、choose...
在Web开发中,Struts2、Spring和iBatis是常见的三大开源框架,它们分别负责MVC模式中的控制层、业务层管理和数据访问层。DWR(Direct Web Remoting)则用于实现AJAX技术,提供前端与后台的实时交互。将这四者整合在...
在Java Web开发中,Spring和iBATIS是两个非常重要的框架。Spring是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)等功能,而iBATIS则是一个持久层框架,用于简化数据库操作。本示例代码旨在展示如何...
在IT行业中,Spring和iBatis是两个非常重要的开源框架,它们分别专注于依赖注入(DI)和持久层操作。Spring作为一个全面的Java企业级应用开发框架,提供了强大的IOC(Inversion of Control)容器,用于管理对象的...
7. **异常处理**:Spring 集成 iBatis 后,可以统一处理数据库操作中的异常,比如 SQL 查询失败、数据转换错误等,提供一致的异常反馈。 8. **性能优化**:iBatis 支持动态 SQL,可以根据条件灵活构建 SQL 语句,...
在IT行业中,构建Web应用程序是一项常见的任务,而Spring、iBatis和Struts2是三个非常流行的开源框架,它们在Java EE开发中扮演着重要角色。这个“spring3 ibatis struts2 搭建的简单项目”就是一个利用这三个框架...
Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。本文将详细介绍这三个框架如何整合,以及在实际项目中如何运用。 首先,Struts2作为表现...