1 Overview
In this paper, we share the abnormal module MyBatis, the corresponding exceptions
package. As shown below:
In the "exhausted MyBatis source code parsing - List Project structure" , a brief introduction to this module are as follows:
MyBatis defines proprietary PersistenceException and TooManyResultsException exception.
In fact, not only in MyBatis exceptions
under-cladding abnormal, in other packages are also abnormal, the entire class diagram as follows:
Below, we look at one by one package abnormalities seen in the past.
2. exceptions
Package
2.1 IbatisException
org.apache.ibatis.exceptions.IbatisException
Achieve RuntimeException class, the base class IBatis exception. code show as below:
|
- 实际上,IbatisException 已经在 2015 年被废弃,取代它的是 PersistenceException 类。
2.2 PersistenceException
org.apache.ibatis.exceptions.PersistenceException
,继承 IbatisException 类,目前 MyBatis 真正的异常基类。代码如下:
public class PersistenceException extends IbatisException { |
2.2.1 ExceptionFactory
org.apache.ibatis.exceptions.ExceptionFactory
,异常工厂。代码如下:
public class ExceptionFactory { |
2.3 TooManyResultsException
org.apache.ibatis.exceptions.TooManyResultsException
,继承 PersistenceException 类,查询返回过多结果的异常。期望返回一条,实际返回了多条。代码如下:
public class TooManyResultsException extends PersistenceException { |
3. parsing
包
3.1 ParsingException
org.apache.ibatis.parsing.ParsingException
,继承 PersistenceException 类,解析异常。代码如下:
public class ParsingException extends PersistenceException { |
3. 其它包
实际上,我们会看到其他包,会和 parsing
包一样,都会定义其独有的异常类。但是,代码都是相同的。所以,这里就简单整理如下:
reflection
包:ReflectionExceptionlogging
包:LogExceptionbuilder
包:BuilderException、IncompleteElementExceptionscripting
包:ScriptingExceptionbinding
包:BindingExceptiontype
Package: TypeExceptionsession
Package: SqlSessionExceptioncache
包: CacheExceptiontransaction
包:TransactionExceptiondatasource
包:DataSourceExceptionexecutor
包:ResultMapException、ExecutorException、BatchExecutorExceptionplugin
包:PluginException