mybatis中mapper存在extend关系时报错:Invalid bound statement (not found) 解决方法
最近接手一个比较老的项目
其中项目中mybaits层 有使用BaseMapper 和 基于他扩展的Mapper即 BaseMapperExt extend BaseMapper
这就导致项目在使用的过程中出现 Invalid bound statement (not found) 问题
常见的可能出现的问题都看了没有太大问题
原因是因为 mybaits会将mapper.select() 方法的全名就是 com.x.BaseMapper.select()当成字符串去 一个Map中取
而这个Map中的数据 是从父级中的使用注解实现sql的函数 和 子类中使用注解实现sql的函数的全名组成的
也就是说 如果你的sql方法是使用了 @Select @Insert @Delete 等等。。实现的 那么这里还可以找到对应的sql
这个时候因为需要改动地方太多了 所以就又看了下其他的解决方案:
最终找到了:
1.在dao模块中的maven的pom文件里添加 确保编译后 xml文件也会打包进去
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
2.在spring-mybaits.xml里
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations">
<list>
// 这里使用 classpath*
<value>classpath*:com/elitel/ioms/**/mapping/${jdbc.dbType}/*.xml</value>
<value>classpath*:com/elitel/ioms/**/mapping/${jdbc.dbType}/ext/*.xml</value>
</list>
</property>
最终使用了后者 改了下配置文件的 代码不用做修改
感觉在mapper中使用extend 和 使用注解 都怪怪的。。。还是喜欢分开 清楚些
凡所有相,皆是虚妄