Java 如果使用带注释的MyBatis发生MySql错误,则引发自己的自定义异常
这是我的问题。我使用mybatis使用注释。为此,我创建了自己的mybatis接口,现在如果执行查询时出现任何错误,我想抛出自己的自定义异常。这是我的确切意思 考虑以下用于封装一些SQL查询的接口:Java 如果使用带注释的MyBatis发生MySql错误,则引发自己的自定义异常,java,sql,mybatis,psql,Java,Sql,Mybatis,Psql,这是我的问题。我使用mybatis使用注释。为此,我创建了自己的mybatis接口,现在如果执行查询时出现任何错误,我想抛出自己的自定义异常。这是我的确切意思 考虑以下用于封装一些SQL查询的接口: public interface MyMapper { @Select("SELECT id, title, description, creationDate, modificationDate, owner_id AS \"owner.id\" " + " FR
public interface MyMapper {
@Select("SELECT id, title, description, creationDate, modificationDate, owner_id AS \"owner.id\" "
+ " FROM article WHERE article_id = #{id}")
Article getArticle(int id);//If this fails I want my own custom Exception to be thrown
}
正如我所评论的,如果我的查询有问题或者getArticle(int id)的执行失败,我希望它抛出我自己的自定义异常,而不是IBatisException。如果这不可能,有人可以建议树层次结构来处理异常,因为知道树层次结构也可以帮助我知道我可以捕获哪些异常。不幸的是,如果出现问题,我甚至无法捕获SqlException。只有例外和例外 首先,我将在DAO实例中包装对MyMapper的每个调用,并在特定位置保留异常层次结构(ExceptionHandler): try/catch子句可能会在每个方法中重复,因此可以选择使用Java代理或重构异常处理功能。
可以使用加载时编织和围绕映射器本身而不是DAO进行编织。但我还是希望DAO给自己留出扩展功能的空间。
关于异常层次结构,MyBatis已经有了自己的异常。在您使用Spring的情况下,它有自己的数据访问异常层次结构,所以您可以尝试MyBatis-Spring集成。但作为状态,基本DataAccessException是 Expert中讨论的数据访问异常层次结构的根 一对一J2EE设计与开发 因此,您可以尝试在前面提到的书的基础上实现类似的东西
public class MyDAO {
MyMapper mapper;
public Article getArticle(int id) {
try {
return mapper.getArticle(id);
} catch (PersistenceException e) {//IbatisException is deprecated
throw ExceptionHandler.handle(e);
}
}
}