登录
首页 >  文章 >  java教程

Spring Boot整合MyBatis:@Mapper、@MapperScan与mybatis.mapper-locations如何协同工作?

时间:2025-03-23 19:30:12 338浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《Spring Boot整合MyBatis:@Mapper、@MapperScan与mybatis.mapper-locations如何协同工作?》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

Spring Boot整合MyBatis:@Mapper、@MapperScan与mybatis.mapper-locations如何协同工作?

Spring Boot集成MyBatis:注解@Mapper、@MapperScan和配置项mybatis.mapper-locations的协同作用

在Spring Boot与MyBatis的整合开发中,Mapper接口与XML映射文件的关联配置至关重要。本文将详细分析@Mapper@MapperScan注解以及mybatis.mapper-locations配置参数之间的差异与协同机制,并解释为何仅使用注解会导致org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误。

该错误提示MyBatis无法找到对应的SQL语句映射。虽然@Mapper(用于Mapper接口)、@MapperScan(用于启动类)以及mybatis.mapper-locations配置参数都与Mapper接口位置相关,但它们的功能并非完全相同。

@Mapper@MapperScan注解的作用是让Spring容器扫描并注册Mapper接口,Spring会为这些接口创建代理对象,从而实现与MyBatis的集成。 例如,Spring可以识别UserMapper接口并将其纳入管理。但是,这仅仅是将接口注册到Spring容器,并没有告知MyBatis在哪里寻找对应的SQL映射文件(XML文件)。

mybatis.mapper-locations=classpath:mapper/*.xml配置参数则明确指示MyBatis到classpath:mapper目录下查找所有.xml文件。这些XML文件包含了Mapper接口方法与SQL语句的映射关系。 MyBatis正是依靠这些XML文件,才能根据UserMapper.selectByPrimaryKey方法找到相应的SQL语句。

因此,仅使用@Mapper@MapperScan注解,Spring可以成功扫描并注册UserMapper接口,但MyBatis却找不到对应的SQL映射文件,从而引发Invalid bound statement错误。只有同时配置mybatis.mapper-locations,MyBatis才能找到正确的XML文件,完成接口方法与SQL语句的绑定,程序才能正常运行。 它们并非互斥关系,而是相辅相成,共同完成MyBatis的配置和运行。 @Mapper@MapperScan负责接口注册,而mybatis.mapper-locations负责SQL映射文件的加载。

本篇关于《Spring Boot整合MyBatis:@Mapper、@MapperScan与mybatis.mapper-locations如何协同工作?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>