`

spring ibatis 异常

阅读更多

Spring3 Mybatis 异常处理

通常在 Dao 层将所有异常都转嫁到 Spring 的 RuntimeException 体系中来 -DataAccessException

 Spring的DAO框架没有抛出与特定技术相关的异常,例如SQLException或HibernateException,抛出的异常都是与特定技术无关的org.springframework.dao.DataAccessException类的子类,避免系统与某种特殊的持久层实现耦合在一起。DataAccessException是RuntimeException,是一个无须检测的异常,不要求代码去处理这类异常,遵循了Spring的一般理念:异常检测会使代码到处是不相关的catch或throws语句,使代码杂乱无章;并且NestedRuntimeException的子类,是可以通过NestedRuntimeException的getCause()方法获得导致该异常的另一个异常。Spring的异常分类有

Spring的DAO异常层次

异常

何时抛出

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中只需要抛出这个运行时异常,我们就可以在

[java] view plaincopy
 
  1. /** 
  2.      *  根据时间获取日KPI数据 
  3.      * @param date 日期 
  4.      * @return 
  5.      */  
  6.     public List<KPIDataBean> getKPIOfDayDataByDate(String date) throws DataAccessException;  


并在它的实现类中也抛出这么个异常。

这样,在调用这个方法的时候,我们捕获这个异常即可:

[java] view plaincopy
 
  1. try {  
  2.     list = kpiDao.getKPIOfDayDataByDate(date);  
  3. catch(DataAccessException e) {  
  4.     System.out.println("test:" + e.getMessage());  
  5. }  


这样就可以捕获相应的异常了。

这是打印出来的信息

 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

分享到:
评论

相关推荐

    Spring与iBATIS的集成

    3. **异常处理**:Spring框架中的异常处理机制可以很好地与iBATIS相结合,统一处理数据库操作过程中可能出现的各种异常情况。 4. **DAO支持**:Spring为DAO(Data Access Object)提供了丰富的支持,包括DAO抽象层...

    spring ibatis 配置(包括事务管理)

    由于配置了事务管理,当出现异常时,Spring会自动回滚事务。 ```java @Service public class UserService { @Autowired private UserMapper userMapper; @Transactional public void addUser(User user) {...

    spring+ibatis声明式事务Demo_

    在IT行业中,Spring框架与iBatis(现为MyBatis)是两个广泛使用的开源工具,主要用于构建企业级Java应用程序。本示例“spring+ibatis声明式事务Demo”将探讨如何在Spring与iBatis集成环境中使用声明式事务管理。声明...

    SPRING IBATIS 保留IBATIS事务的配置方式

    根据提供的文件信息,本文将详细解析Spring与iBatis整合时如何保留并使用iBatis事务管理机制,以及如何在应用程序中实现手动控制事务的方法。 ### Spring与iBatis整合 Spring框架是一个全面的企业级应用开发框架,...

    struts2、spring、ibatis整合

    Struts2、Spring和iBatis是Java Web开发中非常流行的三大开源框架,它们各司其职,共同构建了一个高效且灵活的应用架构。Struts2作为MVC框架负责控制流程,Spring提供依赖注入(DI)和面向切面编程(AOP),以及强大...

    struts2+spring+ibatis 项目 入门使用

    Struts2、Spring和iBatis是Java Web开发中经典的三大框架,它们组合起来可以构建出高效、可维护的企业级应用程序。本项目旨在为初学者提供一个基础的入门指南,帮助理解并掌握这三个框架的集成与使用,实现CRUD...

    Spring iBatis Learning Notes

    ### Spring与iBatis整合学习笔记 #### 一、目的 本文档旨在展示如何在数据库层面上使用iBatis与Spring进行整合。数据库编程通常涉及数据库连接、连接池、SQL语句、输入输出以及事务处理等内容。Java JDBC作为低...

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    这样,一旦发生异常,Spring会自动回滚事务,保证数据一致性。 最后,关于Spring与Struts2的集成。Spring作为应用框架,负责依赖注入和事务管理;Struts2则作为MVC框架,处理请求和视图。结合Ibatis,我们可以创建...

    Spring对IBatis的整合

    Spring通过其内置的支持机制极大地简化了原有的IBatis访问代码,并且提供了与JdbcTemplate一致的异常处理方式。这种整合不仅提高了开发效率,还增强了代码的健壮性和可维护性。 #### 二、Spring提供的IBatis辅助类 ...

    struts1.2 spring2 ibatis 集成项目实战源码

    Struts1.2、Spring2和iBatis是经典的Java Web开发框架,它们的集成可以构建出高效、灵活的企业级应用程序。在这个项目实战源码中,我们可以深入学习这三大框架如何协同工作,以及如何在实际开发中应用它们。 首先,...

    mybaits-spring(ibatis-spring)-1.0.2-bundle

    开发者可以在自定义的DAO层方法中使用它,执行SQL语句,无需关心SqlSession的开启、关闭和异常处理。 2. SqlSessionDaoSupport:这是一个抽象类,为DAO提供了一个SqlSessionTemplate实例,继承自它,只需专注于业务...

    struts2+spring+ibatis+mysql

    "Struts2+Spring+Ibatis+MySQL" 是一个经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。这个组合集成了强大的MVC(Model-View-Controller)框架Struts2、依赖注入与面向切面编程的Spring框架、...

    struts2+spring+ibatis增删改查

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。这个压缩包文件提供的是一种经典的整合使用这三个框架的案例,用于实现一个基础的CRUD...

    spring整合ibatis

    这种方式的优点在于,Spring可以帮助管理事务,提供统一的异常处理,而iBatis则负责SQL的执行,两者结合可以避免直接使用JDBC时的繁琐代码。 在实际开发中,还可以考虑使用MyBatis的动态SQL功能,如if标签、choose...

    struts2 spring ibatis dwr整合配置

    在Web开发中,Struts2、Spring和iBatis是常见的三大开源框架,它们分别负责MVC模式中的控制层、业务层管理和数据访问层。DWR(Direct Web Remoting)则用于实现AJAX技术,提供前端与后台的实时交互。将这四者整合在...

    Spring与iBATIS的集成示例代码

    在Java Web开发中,Spring和iBATIS是两个非常重要的框架。Spring是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)等功能,而iBATIS则是一个持久层框架,用于简化数据库操作。本示例代码旨在展示如何...

    spring和ibatis整合

    在IT行业中,Spring和iBatis是两个非常重要的开源框架,它们分别专注于依赖注入(DI)和持久层操作。Spring作为一个全面的Java企业级应用开发框架,提供了强大的IOC(Inversion of Control)容器,用于管理对象的...

    spring 集成ibatis

    7. **异常处理**:Spring 集成 iBatis 后,可以统一处理数据库操作中的异常,比如 SQL 查询失败、数据转换错误等,提供一致的异常反馈。 8. **性能优化**:iBatis 支持动态 SQL,可以根据条件灵活构建 SQL 语句,...

    spring3 ibatis struts2 搭建的简单项目

    在IT行业中,构建Web应用程序是一项常见的任务,而Spring、iBatis和Struts2是三个非常流行的开源框架,它们在Java EE开发中扮演着重要角色。这个“spring3 ibatis struts2 搭建的简单项目”就是一个利用这三个框架...

    Struts2+spring+ibatis三大框架整合实例

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。本文将详细介绍这三个框架如何整合,以及在实际项目中如何运用。 首先,Struts2作为表现...

Global site tag (gtag.js) - Google Analytics