关于 mybatis-plus-boot-starter 与 mybatis-spring-boot-starter 的错误

不是知道你是否 出现过这样的错误

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 

经过各种度娘,无非就是让你检查三种情况

情况一:mapper.xml没有按照传统的maven架构进行放置
情况二:mybatis的配置信息出错
情况三:idea的编译问题,idea有的时候没有编译生成相应的xml。在idea的target->classes下面没有找到相应的存在xml的文件夹,该文件夹里面有没有对应的mapper(实体名).xml文件

这里不再赘述,可以观看其他连接例如 https://www.jianshu.com/p/a9516bcd3cb0 如果这三种情况足以解决你的问题 ,那么你可以不用浪费时间在往下看。

如果 程序中这三种情况都没有出现 ,那么,再看看 我遇到的问题。
首先我那个是个单元测试 这个时候我的数据是能出来的,但是。。。。

在这里插入图片描述
细心的同学可能发现了 如果字段没有加 as做别名映射,实体类字段是不能被赋值的。
于是🤔,是不是实体类上加上@TableName @TableField 就好了,于是我加上了。。。
此时我引用的依赖是

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency>

但是 @TableName @TableField 的包是com.baomidou.mybatisplus.annotation里边的 所以要更改引用依赖

            <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency>

一切准备就绪。。。😏启动。。。🙂‍↔️
报错。。。。😳

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.cdliker.infrastructure.persistent.dao.IAwardDao.getAwardPOList 

于是 排查了三种情况,都不符合。所以目标就锁定了 依赖上,

mybatis-plus-boot-starte 与mybatis-spring-boot-starter的区别

1. 功能与特性
mybatis-plus-boot-starter:

自动配置:
能够自动配置MyBatis-Plus,减少手动配置的工作量。
CRUD操作简化:提供了一套默认的Service和Mapper实现,使得CRUD操作更加简便,减少了大量的样板代码。
动态SQL:支持动态SQL,提供了丰富的查询功能,使得构建复杂查询变得更加容易。
代码生成器:内置代码生成器,可以快速生成Entity、Mapper、Mapper XML、Service、ServiceImpl、Controller等代码,提高开发效率。
分页插件:提供分页插件,支持一键分页,简化分页查询的实现。
性能分析插件:提供性能分析插件,可以分析SQL执行性能,帮助优化SQL查询。
扩展性:提供了丰富的扩展点,允许开发者根据需要进行自定义扩展。
与Spring Boot集成:无缝集成Spring Boot,无需额外的配置,易于使用。

mybatis-spring-boot-starter:

自动配置:支持MyBatis的自动配置,包括数据源、SqlSessionFactory和Mapper扫描等。
简化配置:通过Spring Boot的自动配置特性,大大简化了MyBatis的配置过程。
常用功能:提供了配置数据源、生成MyBatis的SqlSessionFactory、扫描Mapper文件等常用功能。
与Spring Boot协同工作:使MyBatis和Spring Boot更加容易协同工作,提高开发效率。

2. 使用场景

mybatis-plus-boot-starter:更适用于需要快速开发、简化CRUD操作、提高开发效率的Spring Boot项目。它提供了更多高级特性和扩展点,适合对数据库操作有较多定制需求的场景。
mybatis-spring-boot-starter:适用于需要将MyBatis框架集成到Spring Boot项目中的基本场景。它提供了基本的自动配置和常用功能,适合对数据库操作要求不是特别复杂或需要快速集成的项目。

3. 依赖关系

值得注意的是,mybatis-plus-boot-starter在其内部已经包含了mybatis-spring-boot-starter的依赖(或者至少包含了与MyBatis集成所需的关键依赖),因此在大多数情况下,如果你选择了mybatis-plus-boot-starter,就无需再额外引入mybatis-spring-boot-starter。这也是为什么在一些项目中,同时引入这两个starter时,移除其中一个并不会对项目运行造成影响的原因。

综上所述,mybatis-plus-boot-starter和mybatis-spring-boot-starter在功能和特性上有所区别,选择哪个启动器主要取决于你的项目需求和对数据库操作的具体要求。如果你需要更多的高级特性和扩展性,可以选择mybatis-plus-boot-starter;如果你只是需要基本的MyBatis集成功能,那么mybatis-spring-boot-starter就足够了。

🤔 正常的三种情况 出发点都是扫描的问题,难道问题还在扫描?既然mybatis-plus包含mybatis 那么。。。

mybatis-plus-boot-starter 时遇到 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 这样的错误,而切换到 mybatis-spring-boot-starter 后错误消失,这通常意味着 MyBatis 或 MyBatis-Plus 在寻找或解析 Mapper 接口与其对应的 XML 映射文件时出现了问题。可能会出现以下情况

1.Mapper 接口与 XML 映射文件的位置或命名不匹配:

确保 Mapper 接口和 XML 映射文件位于正确的包路径下,并且文件名与接口名匹配(去掉接口名中的 I 前缀,并加上 .xml 后缀)。
检查 XML 映射文件的 namespace 是否与 Mapper 接口的全限定名完全一致。

2.Mapper 扫描路径未正确配置:

在 Spring Boot 配置中,确保你已经正确配置了 Mapper 扫描路径。这可以通过 @MapperScan 注解或在 application.properties/application.yml 文件中设置 mybatis-plus.mapper-locations 来实现。
如果你的 Mapper 接口和 XML 文件位于不同的包路径下,你需要确保 @MapperScan 注解或配置属性包含了所有这些路径。
XML 映射文件未正确放置在资源目录中:
确保 XML 映射文件被放置在 Spring Boot 项目的资源目录(如 src/main/resources)中,并且其路径与 Mapper 接口的路径相对应。

3.依赖冲突:

检查你的项目依赖,确保没有引入多个版本的 MyBatis 或 MyBatis-Plus,这可能会导致类加载器加载了错误的类。
如果你的项目中同时包含了 mybatis-spring-boot-starter 和 mybatis-plus-boot-starter,确保只保留一个,因为它们是互斥的。
Spring Boot 的自动配置问题:
有时候,Spring Boot 的自动配置可能不会按预期工作。尝试在 application.properties/application.yml 中显式配置 MyBatis-Plus 的相关属性,或者在你的配置类中手动配置 SqlSessionFactory 和 MapperScannerConfigurer。

4.检查 MyBatis-Plus 特有的配置:

如果你在使用 MyBatis-Plus 特有的功能(如分页插件、自动填充等),请确保你已经按照 MyBatis-Plus 的要求进行了配置。

5.IDE 或构建工具的问题:

有时候,IDE(如 IntelliJ IDEA 或 Eclipse)或构建工具(如 Maven 或 Gradle)可能没有正确更新或同步你的项目配置。尝试重启 IDE、重新构建项目或清理并重新导入 Maven/Gradle 依赖。

6.查看日志和错误堆栈:

仔细查看错误堆栈和 Spring Boot 的启动日志,可能会有更多关于为什么 MyBatis 找不到绑定语句的线索。

🤯 配置,配置 application.properties/application.yml 文件中设置 mybatis-plus.mapper-locations 来实现
在使用 mybatis-spring-boot-starter 的时候 使用

mybatis:mapper-locations: classpath:/mybatis/mapper/*.xmlconfig-location:  classpath:/mybatis/config/mybatis-config.xml

在使用 mybatis-plus-boot-starter 的时候 使用

mybatis-plus:mapper-locations: classpath:/mybatis/mapper/*.xmlconfig-location:  classpath:/mybatis/config/mybatis-config.xml

end … 🥵

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148837.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

智能PPT行业赋能用户画像

智能PPT市场在巨大的需求前景下&#xff0c;已吸引一批不同类型的玩家投入参与竞争。从参与玩家类型来看&#xff0c;不乏各类与PPT创作有关的上下游企业逐步向智能PPT赛道转型进入&#xff0c;也包括顺应生成式AI技术热潮所推出的创业企业玩家。当前&#xff0c;智能PPT赛道发…

【网络协议栈】传输层的意义 和 UDP协议结构的解析(内含逻辑图解通俗易懂)

绪论​ “六年之约—jack”。本章是网络协议栈第二个主要模块 传输层&#xff0c;传输层在网络层中是非常重要的&#xff0c;他主要通过储存双方的端口记录数据的来源以及数据最终的去处&#xff0c;并且能一定的保证数据传输到达&#xff0c;以及快速高效的传递。本章主要讲到…

(附源码)基于django的电力工程作业现场物资管理系统的设计与实现-计算机毕设 22067

基于django的电力工程作业现场物资管理系统的设计与实现 摘 要 随着电力工程的快速发展&#xff0c;作业现场物资管理成为保障工程进度和质量的关键环节。本文旨在设计并实现一个基于Django框架的电力工程作业现场物资管理系统&#xff0c;以提高物资管理的效率和准确性。该系统…

约克VRF中央空调的优点不止一点点!

约克VRF中央空调的优点不止一点点&#xff01;      整体造型简约大方&#xff0c;隐入吊顶里刚刚好&#xff0c;高级又很有氛围感。      用约克小方App就能自由操控&#xff0c;忘记关空调再也不用跑回来关啦&#xff0c;使用起来hin方便&#xff0c;懒人大喜&#x…

MySQL如何实现并发控制?(上)

前言 最开始学习数据库的时候都会被问到一个问题&#xff1a;“数据库系统相比与文件系统最大的优势是什么&#xff1f;”。具体的优势有很多&#xff0c;其中一个很重要的部分是&#xff1a;数据库系统能够进行更好的并发访问控制。 那么&#xff0c;数据库系统到底是怎么进…

通过 Flink 的火焰图定位反压

在 Apache Flink 中&#xff0c;Web UI 提供了丰富的监控工具来帮助用户分析和解决作业性能问题&#xff0c;其中火焰图&#xff08;Flame Graph&#xff09;是用于分析反压问题的一个强有力的工具。反压可能是由于作业中某些算子处理速度过慢&#xff0c;或者资源耗尽导致的。…

【解密 Kotlin 扩展函数】扩展函数的底层原理(十八)

导读大纲 1.1.1 从 Java 调用扩展函数1.1.2 扩展函数无法重载 1.1.1 从 Java 调用扩展函数 在编译器底层下,扩展函数是一种静态方法,它接受接收器对象作为第一个参数 调用它不涉及创建适配器对象或任何其他运行时开销这使得从 Java 使用扩展函数变得非常简单 调用静态方法并传…

使用k8s部署RainLoop-Webmail

说明 * rainloop最新源码官方下载地址&#xff1a;https://www.rainloop.net/downloads/ * 系统要求&#xff1a;https://www.rainloop.net/docs/system-requirements/ * 安装文档&#xff1a;https://www.rainloop.net/docs/installation/ * 更多详细资料请查看官方文档 * do…

HDL coder使用手册

&#x1f4a1; 由于本科毕设女朋友准备使用FPGA完成&#xff0c;因此写这篇文章帮助她快速上手HDL coder的使用&#xff0c;降低前期入门的难度。 支持生成HDL代码的simulink库 名字中含有HDL的库中的模块一般都可以用来生成HDL代码。直接搜索模块名称&#xff0c;比如搜索fir&…

管道检测与识别系统源码分享

管道检测与识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

C++进阶学习——模版进阶

1. 非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当成…

寄大件快递用什么物流更便宜,寄20-200公斤大件价格对比

大件货物&#xff0c;大件行李&#xff0c;大件电器用什么物流快递更便宜呢&#xff1f; 新生入学&#xff0c;放寒暑假&#xff0c;新单位入职&#xff0c;搬家换工作的时候&#xff0c;都会遇到大件行李货物要邮寄的情况。这些都属于物流中的寄大件服务&#xff0c;在快递费…

隐私计算相关知识

WOE&#xff08; Weight of Evidence&#xff09;编码 一种在数据分析&#xff0c;尤其是信用评分和欺诈检测等领域中常用的特征编码方法。它的主要目的是将分类变量转换为数值变量&#xff0c;从而使得模型能够更好地理解类别与目标变量之间的关系 IV&#xff08; Informatio…

大数据毕业设计选题推荐-网络电视剧收视率分析系统-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…

如何在平板电脑上用谷歌浏览器观看高清视频

在数字时代&#xff0c;使用平板电脑观看高清视频已成为一种流行的娱乐方式。Google Chrome浏览器因其快速、简洁和兼容性强的特点&#xff0c;成为许多用户的首选。本文将指导您如何在平板电脑上设置和使用Chrome浏览器来享受高清视频内容&#xff0c;同时融入一些提升浏览体验…

沃尔玛、亚马逊、Temu提升产品曝光度的实用技巧:测评补单

在当今竞争激烈的市场环境中&#xff0c;对于一家新开店铺或新上市产品而言&#xff0c;快速实现销量增长往往是一项艰巨的挑战。由于缺乏初始的市场认可&#xff0c;潜在消费者通常会对新品牌或产品产生犹豫。因此&#xff0c;提升店铺和产品的曝光率是实现快速出单的首要任务…

文档加密,如何设置?加密文档的10个小妙招值得参考!(电脑文件安全加密)

文档加密&#xff0c;如何设置&#xff1f; 是不是经常担心电脑里的重要文件被人偷看&#xff1f;别担心&#xff0c;学会这几招加密小技巧&#xff0c;就能给文件穿上"隐形衣"。不管是个人隐私还是公司机密&#xff0c;都能得到妥善保护。 接下来&#xff0c;咱们…

数组组成的最小数字 - 华为OD统一考试(E卷)

2024华为OD机试&#xff08;E卷D卷C卷&#xff09;最新题库【超值优惠】Java/Python/C合集 题目描述 给定一个整型数组&#xff0c;请从该数组中选择3个元素组成最小数字并输出(如果数组长度小于3&#xff0c;则选择数组中所有元素来组成最小数字)。 输入描述 一行用半角逗号…

2024年陕西省安全员B证证模拟考试题库及陕西省安全员B证理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年陕西省安全员B证证模拟考试题库及陕西省安全员B证理论考试试题是由安全生产模拟考试一点通提供&#xff0c;陕西省安全员B证证模拟考试题库是根据陕西省安全员B证最新版教材&#xff0c;陕西省安全员B证大纲整理…

中国可观测日「成都站」圆满落幕

在数字化转型的大潮中&#xff0c;企业对于系统的稳定性和可靠性提出了更高的要求&#xff0c;而可观测性平台正是确保业务连续性的关键技术。9月20日&#xff0c;中国可观测日成都站的活动圆满落幕&#xff0c;为技术专家们提供了一个宝贵的平台&#xff0c;深入探讨了可观测性…