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的接口。

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.properties或application.yml中配置了mybatis.mapper-locations,指定了XML文件的路径,MyBatis才能正确加载SQL映射文件并完成数据库操作。

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

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

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2605945.html

(0)
上一篇 2025年3月6日 20:10:30
下一篇 2025年2月27日 00:01:38

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论