异常信息:java.lang.InstantiationException: tk.mybatis.mapper.provider.MapperProvider
mybatis-config.xml中<plugins>节点中加入通用mapper插件和分页插件
<plugins>
<!--通用mapper-->
<plugin interceptor="tk.mybatis.mapper.mapperhelper.MapperInterceptor">
<!--主键自增回写方法,默认值MYSQL,详细说明请看文档HSQLDB-->
<property name="IDENTITY" value="MYSQL"/>
<!--可选参数一共3个,对应0,1,2,分别为SequenceName,ColumnName,PropertyName-->
<property name="seqFormat" value="{0}.nextval"/>
<!--通用Mapper接口,多个通用接口用逗号隔开-->
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin>
<!-- 分页插件 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor"/>
</plugins>
上面的是错误的,也是导致出现这种异常的原因。插件的配置应该在通用mapper前面
<plugins>
<!-- 自定义分页插件 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor"/>
<!--通用mapper-->
<plugin interceptor="tk.mybatis.mapper.mapperhelper.MapperInterceptor">
<!--主键自增回写方法,默认值MYSQL,详细说明请看文档HSQLDB-->
<property name="IDENTITY" value="MYSQL"/>
<!--可选参数一共3个,对应0,1,2,分别为SequenceName,ColumnName,PropertyName-->
<property name="seqFormat" value="{0}.nextval"/>
<!--通用Mapper接口,多个通用接口用逗号隔开-->
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin>
</plugins>
这是由于mapper中
MapperInterceptor在做拦截的时候会将MappedStatement的执行对象替换为MapperProvider对象,MapperProvider是通用Mapper自己定义的,在原有的基础上进行封装增强,为我们封装了一些常用的CRUD操作,所以我们一般只需要继承通用Mapper的接口就可以实现大部分逻辑。但是它的实例化必须依赖带参数的构造函数
而pageHelper中并没有这个类,所以报错。