mybatis- abnormal module

1 Overview

In this paper, we share the abnormal module MyBatis, the corresponding  exceptions package. As shown below:`exceptions` 包

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:Abnormal system

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:

@Deprecated
public class IbatisException extends RuntimeException {

private static final long serialVersionUID = 3880206998166270511L;

public IbatisException() {
super();
}

public IbatisException(String message) {
super(message);
}

public IbatisException(String message, Throwable cause) {
super(message, cause);
}

public IbatisException(Throwable cause) {
super(cause);
}

}
  • 实际上,IbatisException 已经在 2015 年被废弃,取代它的是 PersistenceException 类。

2.2 PersistenceException

org.apache.ibatis.exceptions.PersistenceException ,继承 IbatisException 类,目前 MyBatis 真正的异常基类。代码如下:

public class PersistenceException extends IbatisException {

private static final long serialVersionUID = -7537395265357977271L;

public PersistenceException() {
super();
}

public PersistenceException(String message) {
super(message);
}

public PersistenceException(String message, Throwable cause) {
super(message, cause);
}

public PersistenceException(Throwable cause) {
super(cause);
}

}

2.2.1 ExceptionFactory

org.apache.ibatis.exceptions.ExceptionFactory ,异常工厂。代码如下:

public class ExceptionFactory {

private ExceptionFactory() {
// Prevent Instantiation
}

/**
* 包装异常成 PersistenceException
*
* @param message 消息
* @param e 发生的异常
* @return PersistenceException
*/
public static RuntimeException wrapException(String message, Exception e) {
return new PersistenceException(ErrorContext.instance().message(message).cause(e).toString(), e);
}

}

2.3 TooManyResultsException

org.apache.ibatis.exceptions.TooManyResultsException ,继承 PersistenceException 类,查询返回过多结果的异常。期望返回一条,实际返回了多条。代码如下:

public class TooManyResultsException extends PersistenceException {

private static final long serialVersionUID = 8935197089745865786L;

public TooManyResultsException() {
super();
}

public TooManyResultsException(String message) {
super(message);
}

public TooManyResultsException(String message, Throwable cause) {
super(message, cause);
}

public TooManyResultsException(Throwable cause) {
super(cause);
}

}

3. parsing 包

3.1 ParsingException

org.apache.ibatis.parsing.ParsingException ,继承 PersistenceException 类,解析异常。代码如下:

public class ParsingException extends PersistenceException {

private static final long serialVersionUID = -176685891441325943L;

public ParsingException() {
super();
}

public ParsingException(String message) {
super(message);
}

public ParsingException(String message, Throwable cause) {
super(message, cause);
}

public ParsingException(Throwable cause) {
super(cause);
}

}

3. 其它包

实际上,我们会看到其他包,会和 parsing 包一样,都会定义其独有的异常类。但是,代码都是相同的。所以,这里就简单整理如下:

  • reflection 包:ReflectionException
  • logging 包:LogException
  • builder 包:BuilderException、IncompleteElementException
  • scripting 包:ScriptingException
  • binding 包:BindingException
  • type Package: TypeException
  • session Package: SqlSessionException
  • cache 包: CacheException
  • transaction 包:TransactionException
  • datasource 包:DataSourceException
  • executor 包:ResultMapException、ExecutorException、BatchExecutorException
  • plugin 包:PluginException

Guess you like

Origin www.cnblogs.com/siye1989/p/11619665.html