关于 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 … 🥵
相关文章:

关于 mybatis-plus-boot-starter 与 mybatis-spring-boot-starter 的错误
不是知道你是否 出现过这样的错误 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 经过各种度娘,无非就是让你检查三种情况 情况一:mapper.xml没有按照传统的maven架构进行放置 情况二:mybatis的配置信…...

NLP 文本分类任务核心梳理
解决思路 分解为多个独立二分类任务将多标签分类转化为多分类问题更换 loss 直接由模型进行多标签分类 数据稀疏问题 标注更多数据,核心解决方案: 自己构造训练样本 数据增强,如使用 chatGPT 来构造数据更换模型 减少数据需求增加规则弥补…...

k8s中pod的创建过程和阶段状态
管理k8s集群 kubectl k8s中有两种用户 一种是登录的 一种是/sbin/nologin linux可以用密码登录,也可以用证书登录 k8s只能用证书登录 谁拿到这个证书,谁就可以管理集群 在k8s中,所有节点都被网络组件calico设置了路由和通信 所以pod的ip是可以…...

NSSCTF刷题篇1
js类型 [SWPUCTF 2022 新生赛]js_sign 这是一道js信息泄露的题目直接查看源码,有一个main.js文件点击之后,有一串数字和一段base64编码,解开base64编码得到这个编码为敲击码 解码在线网站:Tap Code - 许愿星 (wishingstarmoye.…...

[数据集][目标检测]棉花叶子病害检测数据集VOC+YOLO格式977张22类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):977 标注数量(xml文件个数):977 标注数量(txt文件个数):977 标注类别…...
产品经理面试整理-常见面试问题
以下是一些常见的产品经理面试问题及其解答思路。这些问题涵盖了产品管理的各个方面,包括战略、执行、数据分析、用户体验、跨团队合作等。在准备这些问题时,使用结构化的回答方式(如STAR法)能够帮助你更好地表达你的观点和经验。 1. 常见产品经理面试问题 1.1 你如何定义用…...

数据库(选择题)
基本概念 数据库(DB):长期存储在计算机内的、有组织的、可共享的数据集合。 数据库管理系统(DBMS):它是数据库的机构,是一个系统软件,负责数据库中的数据组织、数据操纵、数据维护…...

粒子向上持续瀑布动画效果(直接粘贴到记事本改html即可)
代码: 根据个人喜好修改即可 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>宽粒子向上…...
卷积神经网络(CNN):深度学习中的视觉奇迹
目录 一、什么是卷积神经网络? 二、CNN的核心组件 1. 卷积层(Convolutional Layer) 2. 激活函数(Activation Function) 3. 池化层(Pooling Layer) 4. 全连接层(Fully Connected…...
Vue:加载本地视频
目录 封装视频弹框调用视频组件 封装视频弹框 <template><el-dialog class"videoBox" :title"title" :visible.sync"visible" width"40%" :before-close"handleOnClose" :close-on-click-modal"false" …...

论文阅读:A Generalization of Transformer Networks to Graphs
论文阅读:A Generalization of Transformer Networks to Graphs 论文地址1 摘要2 贡献Graph TransformerOn Graph Sparsity(图稀疏)On Positional Encodings(位置编码)3 Graph Transformer Architecture(架…...

中国计量大学《2022年801+2022年819自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《25届中国计量大学801819自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2022年801真题 2022年819真题 Part1:2022年完整版真题 2022年801…...

创客匠人运营课堂|增强用户的参与度和忠诚度,这一个工具就能实现!
活动投票是通过营销活动来提升用户粘性及平台裂变效果的工具。可以让活动得到更好的传播,平台品牌得到更大的曝光。 使用场景 活动投票是一种互动营销手段,适用于各种活动场景,具有增强用户的参与度和忠诚度,提高活动的透明度和公…...

k8s 微服务 ingress-nginx 金丝雀发布
目录 一 什么是微服务 二 微服务的类型 三 ipvs模式 3.1 ipvs模式配置方式 四 微服务类型详解 4.1 clusterip 4.2 ClusterIP中的特殊模式headless 4.3 nodeport 4.4 loadbalancer 4.5 metalLB 4.6 externalname 五 Ingress-nginx 5.1 ingress-nginx功能 5.2 部署…...

Elasticsearch不停机切换(上云)方案
如何给飞行中的飞机换引擎? 背景 业务背景 略 技术背景 线下集群40个索引左右,总数据量不大,不到100G因为ES承担的业务鉴权业务,所以不能接受停机割接 还有就是ES中数据来自各个业务方,推送的时机不定,也没有完备的重推机制&…...
归纳一下Invoke,beginInvoke,还有InvokeRequire
1.在WinForms中的Invoke和BeginInvoke WinForms是一个单线程的UI框架。在多线程的环境下操作UI控件时。需要使用Invoke和BeginInvoke跨线程调起UI线程 这两的区别如下Invoke:同步调用,当前代码不在UI线程上执行时,会卡住当前线程࿰…...

Prompt最佳实践|指定输出的长度
在OpenAI的官方文档中已经提供了[Prompt Enginerring]的最佳实践,目的就是帮助用户更好的使用ChatGPT 编写优秀的提示词我一共总结了9个分类,本文讲解第6个分类:指定输出长度 提供更多的细节要求模型扮演角色使用分隔符指定任务步骤提供样例…...

离散制造 vs 流程制造:锚定精准制造未来,从装配线到化学反应,实时数据集成在制造业案例中的多维应用
使用 TapData,化繁为简,摆脱手动搭建、维护数据管道的诸多烦扰,轻量替代 OGG, Kettle 等同步工具,以及基于 Kafka 的 ETL 解决方案,「CDC 流处理 数据集成」组合拳,加速仓内数据流转,帮助企业…...

教你一招:在微信小程序中为用户上传的图片添加时间水印
在微信小程序开发过程中,我们常常需要在图片上添加水印,以保护版权或增加个性化元素。本文将为大家介绍如何在微信小程序中为图片添加时间水印,让你的小程序更具特色。 实现步骤: 1. 创建页面结构 在pages目录下创建一个名为upl…...

MySQL --基本查询(上)
文章目录 1.Create1.1单行数据全列插入1.2多行数据指定列插入1.3插入否则更新1.4替换 2.Retrieve2.1 select列2.1.1全列查询2.1.2指定列查询2.1.3查询字段为表达式2.1.4 为查询结果指定别名2.1.5结果去重 2.2where 条件2.2.1英语不及格的同学及英语成绩 ( < 60 )2.2.2语文成…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...