【bug日记】已解决:Invalid bound statement (not found): 找不到对应的Mapper映射类

急着解决问题的哥们直接用目录跳到下文哈 我放传送门了

目录

试错

尝试过确认的东西:

最终解决方案!已经完美解决:

只需要在你配置数据源的地方:

更改为:        MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();

已确认 所有失效的方法全部恢复!

如果解决了 麻烦给个免费的三连!


一个悲伤的故事

本来是想用Springboot3整合MyBatisPlus 做一波数据处理层的简化 也就是不用再写sql语句 直接使用IService封装好的方法 做简单的curd

本来用的好好的  在一次业务迭代中 需要对复杂嵌套的json对象进行curd  

灵机一动 反手写个类型处理器吧 JSONTypeHandler  然后再把类型处理器在Data的实体类当中映射出来

然后就有了

public class JSONTypeHandler extends BaseTypeHandler<JSONObject> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter, JdbcType jdbcType) throws SQLException {ps.setString(i, parameter.toString());}@Overridepublic JSONObject getNullableResult(ResultSet rs, String columnName) throws SQLException {return JSONUtil.parseObj(rs.getString(columnName));}@Overridepublic JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {return JSONUtil.parseObj(rs.getString(columnIndex));}@Overridepublic JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {return JSONUtil.parseObj(cs.getString(columnIndex));}
}

好了 为了让MyBatisPlus识别到 我写的类型处理器  要加上对应配置文件

<configuration><!-- 其他配置项 --><typeHandlers><!-- 注册自定义的类型处理器 --><typeHandler handler="TopOne.utils.Handler.JSONTypeHandler"/></typeHandlers>
</configuration>

问题就出现了 除了这个 映射了json类型的查询可以curd以外  其他所有原生态的封装好的方法全部都不能用了!!!

 可能你还不明白具体是什么概念

我们看到 这个Mapper 明明是继承BaseMapper对吧?  

我们再来看看BaseMapper里面有啥!进去看!

public interface BaseMapper<T> extends Mapper<T> {int insert(T entity);int deleteById(Serializable id);int deleteById(T entity);int deleteByMap(@Param("cm") Map<String, Object> columnMap);int delete(@Param("ew") Wrapper<T> queryWrapper);int deleteBatchIds(@Param("coll") Collection<?> idList);int updateById(@Param("et") T entity);int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);T selectById(Serializable id);List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);default T selectOne(@Param("ew") Wrapper<T> queryWrapper) {List<T> list = this.selectList(queryWrapper);if (list.size() == 1) {return list.get(0);} else if (list.size() > 1) {throw new TooManyResultsException("Expected one result (or null) to be returned by selectOne(), but found: " + list.size());} else {return null;}}default boolean exists(Wrapper<T> queryWrapper) {Long count = this.selectCount(queryWrapper);return null != count && count > 0L;}Long selectCount(@Param("ew") Wrapper<T> queryWrapper);List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);<P extends IPage<T>> P selectPage(P page, @Param("ew") Wrapper<T> queryWrapper);<P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param("ew") Wrapper<T> queryWrapper);
}

这是完整的BaseMapper  看清楚那个报错说的什么Invalid bound statement (not found): TopOne.ListenerSystem.mapper.ListenerMapper.selectList  找不到selectList 方法!!!

学过Java都知道 一个子类继承他的父类 使用他父类的方法不是理所当然的吗?

这个BaseMapper的selectList 方法就好端端摆在那里   他就是用不了!说找不到! 你想一下气不气人?  不止是selectList 方法  而是那里面所有封装好的方法  就摆在那 他就是用不了!

你说他是不是有病呢?

我啥配置也没动 就加了个类型处理器 他就搁着理发店

吐槽到此为止


试错

尝试过确认的东西:

1.ScannerMapper 扫描到了对应的Mapper 

2.配置文件 路径正确

3.xml文件路径正确并无语法错误

4.别名扫描包确认路径无误

5.使用最新的MyBatisPlus版本

6.能用的法子都用了...

最终解决方案!已经完美解决:

在你确认了我上面的所有待确认点无误后

可以尝试  在

MybatisConfig中

注意看这个地方

@Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);sessionFactory.setConfigLocation(new PathMatchingResourcePatternResolver().getResource("mybatis-config.xml"));return sessionFactory.getObject();}

只需要在你配置数据源的地方:

        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();

更改为:
        MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();

已确认 所有失效的方法全部恢复!

如果解决了 麻烦给个免费的三连!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv9推理详解及部署实现

目录 前言零、YOLOv9简介一、YOLOv9推理(Python)1. YOLOv9预测2. YOLOv9预处理3. YOLOv9后处理4. YOLOv9推理 二、YOLOv9推理(C)1. ONNX导出2. YOLOv9预处理3. YOLOv9后处理4. YOLOv9推理 三、YOLOv9部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX…

为什么被蜜蜂蛰了会肿得像馒头

有的人却只是一点点小鼓包。 病情分析&#xff1a;蜜蜂体内存在一种有毒物质&#xff0c;其主要成分是蚁酸&#xff0c;这种成分进入人体后&#xff0c;会和血液发生反应&#xff0c;导致皮肤表现出红肿和瘙痒的症状。一些人群还会对蜜蜂表现出过敏反应&#xff0c;此类人群在…

React富文本编辑器开发(四)

上一节我们做了块级元素的格式操作&#xff0c;这节我们来讲行内元素的相关操作。行内元素的样式一般指 粗体、斜体、代码或 删除线等 。通过前一章的内容得知&#xff0c;元素的渲染是通过渲染器来呈现的&#xff0c;块级元素通过指定 renderElement, 行内元素&#xff08;即内…

【电路笔记】-双极晶体管

双极晶体管 文章目录 双极晶体管1、概述2、双极晶体管结构3、双极晶体管配置3.1 共基极 (CB) 配置3.2 共发射极 (CE) 配置3.3 共集极 (CC) 配置4、总结1、概述 双极结型晶体管是一种可用于开关或放大的半导体器件。 与半导体二极管不同,半导体二极管由两片半导体材料组成,形…

5G智能制造食品工厂数字孪生可视化平台,推进食品行业数字化转型

5G智能制造食品工厂数字孪生可视化平台&#xff0c;推进食品行业数字化转型。随着科技的飞速发展&#xff0c;食品工业正迎来一场前所未有的数字化转型。在这场转型中&#xff0c;5G智能制造工厂数字孪生可视化平台发挥着至关重要的作用。它不仅提高了生产效率&#xff0c;降低…

约课小程序有哪些功能

​约课小程序为教育机构、教师和学生提供了便捷的预约和管理服务&#xff0c;有效提升了教学效率和用户体验。在这篇文章中&#xff0c;我们将介绍约课小程序常见的功能&#xff0c;帮助教育机构更好地了解如何利用小程序来提升服务质量和管理效率。 1. **课程预约功能**&…

CUDA学习笔记04:向量之和

参考资料 CUDA编程模型系列二(向量操作)_哔哩哔哩_bilibili &#xff08;非常好的学习资料&#xff01;&#xff09; vs2019 随意新建一个空项目&#xff0c;按照之前的环境配置配好项目依赖&#xff1a; CUDA学习笔记02&#xff1a;测试程序hello world-CSDN博客 代码结构…

leetcode 3.5

普通数组 1.最大子数组和 最大子数组和 前缀和pre 动态规划 pre保留的是当前包含了当前遍历的最大的前缀和&#xff0c;如果之前的pre 对结果有增益效果&#xff0c;则 pre 保留并加上当前遍历, 如果pre 对结果无增益效果&#xff0c;需要舍弃&#xff0c;则 pre 直接更新为…

【BUG】Windows状态栏总卡死解决办法

屋漏偏逢连夜雨&#xff0c;正在赶deadline呢&#xff0c;Windows状态老卡死&#xff0c;一时间崩溃。 解决办法&#xff1a; 右键状态栏新闻和咨询关掉 这个烧笔新闻与资讯我真服了

MATLAB报错:尝试将 SCRIPT imread 作为函数执行

报错&#xff1a; 在执行matlab脚本的时候出现报错。 >> imread 尝试将 SCRIPT imread 作为函数执行: S:\temp_file\matlab\DigitalImageProcessing\imread.m出错 imread (line 2) I imread(S:\temp_file\matlab\DigitalImageProcessing\blueman.png);分析以及解决方…

splay学习笔记重制版

以前写的学习笔记&#xff1a;传送门 但是之前写的比较杂乱&#xff0c;这里重制一下 问题背景 假设我们要维护一个数据结构&#xff0c;支持插入、删除、查询某个值的排名&#xff0c;查询第 k k k大的值等操作。 最直接的想法是用二叉搜索树&#xff0c;也就是左子树权值&l…

小迪安全32WEB 攻防-通用漏洞文件上传二次渲染.htaccess变异免杀

#知识点&#xff1a; 1、文件上传-二次渲染 2、文件上传-简单免杀变异 3、文件上传-.htaccess 妙用 4、文件上传-PHP 语言特性 #详细点&#xff1a; 1、检测层面&#xff1a;前端&#xff0c;后端等 2、检测内容&#xff1a;文件头&#xff0c;完整性&#xff0c…