Spring Boot中@Mapper、@MapperScan和mybatis.mapper-locations配置有何区别?

spring boot中@mapper、@mapperscan和mybatis.mapper-locations配置有何区别?

Spring Boot集成MyBatis时,@Mapper@MapperScan注解和mybatis.mapper-locations配置参数如何协同工作?

在Spring Boot与MyBatis的整合项目中,Mapper接口的配置至关重要。本文将详细分析@Mapper@MapperScan注解以及mybatis.mapper-locations配置文件参数之间的区别,并解释为什么仅使用注解可能导致org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误。

该错误提示表明MyBatis找不到对应的SQL映射语句,通常是因为Mapper接口对应的XML配置文件未能正确加载。

@Mapper注解作用于单个Mapper接口,告知Spring将其注册为MyBatis的Mapper接口,并创建代理对象。该代理对象负责将接口方法调用转换为数据库操作。

@MapperScan注解则用于扫描指定包下所有Mapper接口,批量完成@Mapper注解的功能,自动查找并注册所有标注为@Mapper的接口。

有道小P 有道小P

有道小P,新一代AI全科学习助手,在学习中遇到任何问题都可以问我。

有道小P 64 查看详情 有道小P

mybatis.mapper-locations=classpath:mapper/*.xml配置参数指定了MyBatis XML映射文件的位置。MyBatis依赖这些XML文件中的SQL语句执行数据库操作。@Mapper@MapperScan仅负责将接口与MyBatis框架连接,自身不包含SQL语句信息,MyBatis需要XML文件获取具体的SQL语句。

因此,仅使用@Mapper@MapperScan注解,MyBatis虽然能找到Mapper接口,但找不到对应的SQL映射文件(XML文件),从而导致Invalid bound statement错误。只有在application.propertiesapplication.yml中配置了mybatis.mapper-locations,指定了XML文件的路径,MyBatis才能正确加载SQL映射文件并完成数据库操作。

它们并非冗余配置,而是分工明确:前两者负责Mapper接口的注册,后者负责提供MyBatis执行SQL语句所需的配置信息。 前两者建立接口与MyBatis框架的关联,后者提供MyBatis执行SQL语句所需的配置。

以上就是Spring Boot中@Mapper、@MapperScan和mybatis.mapper-locations配置有何区别?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/270129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 11:54:20
下一篇 2025年11月4日 11:58:01

相关推荐

发表回复

登录后才能评论
关注微信