Spring Framework +Mybatis时报SqlSession注册错误

SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6fdbe764] was not registered for synchronization because synchronization is not active
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6fdbe764]

 

用Junit测试时发现报这个错误,检查注入,mybatis.xml文件没有发现错误。映射文件mapper的 namespace也是全类名。

最后发现是因为Mybatis是面向接口编程,mapper文件名应该保持与接口文件名一致

Spring Framework +Mybatis时报SqlSession注册错误_第1张图片

Spring Framework +Mybatis时报SqlSession注册错误_第2张图片

如果接口文件名是UserDao.java, 那对应的mapper文件名也应该与之一致,写为UserDao.xml,其中namespace也应该写成接口文件名的全类名

namespace属性

在MyBatis中,Mapper中的namespace用于绑定Dao接口的,即面向接口编程。

它的好处在于当使用了namespace之后就可以不用写接口实现类,业务逻辑会直接通过这个绑定寻找到相对应的SQL语句进行对应的数据处理

Spring Framework +Mybatis时报SqlSession注册错误_第3张图片

总结:因为在mybatis.xml文件中导入mapper映射文件时,配置的是包导入,

Spring Framework +Mybatis时报SqlSession注册错误_第4张图片

Spring Framework配置时先找文件名,再去找namespace,结果映射文件名与接口名不一致,导致无法注册。映射文件名保持和接口的接口名称一样,这样可以避免许多因命名而导致的BUG.

你可能感兴趣的:(Spring Framework +Mybatis时报SqlSession注册错误)