org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.threegrand.urdm.system.dao.UserDao.saveUser
方案一
方案二
方案三
我主要从后面两个方案中获得灵感的,首先看我的配置, 使用的是mybatis的@Repository注解,将mybatis接口注入:
<!-- MyBatis配置 -->
<bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:/mybatis/configuration-mybatis.xml"/>
<!-- 显式指定Mapper文件位置 -->
<property name="mapperLocations">
<list>
<value>classpath*:/mapper/UserDao.xml</value>
</list>
</property>
<property name="configurationProperties">
<props>
<!-- mapUnderscoreToCamelCase属性将表中列名的下划线映射为JavaBean属性的驼峰式命名,默认为false -->
<prop key="mapUnderscoreToCamelCase">true</prop>
</props>
</property>
</bean>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
之前使用mybatis plugins将所有潜在的错误都排查过了,当然还有启动日志,还重写了项目,并且检查了每个可能发生错误的配置,但是还是不好使。我把xml文件和Dao接口放在一个包名下,然后让注解去扫描,进行动态代理,但是依然找不到问题所在,我使用debug模式模拟方法调用还是不行。听说要将xml文件放到config-mybatis.xml中的mappers中,但是还是不好使,在idea 下的代码资源文件中和测试资源文件中都试过了,不好使,很衰的样子,我跟另一个朋友也讨论了,但是没有结果。
后来把mapper映射文件放到资源目录下,进行扫描竟然好使了。
如图: