baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.35k stars 4.31k forks source link

使用 selectOne 方法,出现虚空参数(无法确定引起该问题的原因) #5529

Closed ghost closed 1 year ago

ghost commented 1 year ago

当前使用版本(必填,否则不予处理)

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

该问题是如何引起的?(确定最新版也有问题再提!!!)

正常使用 selectOne 方法时引起

以下为出错代码细节(因企业原因,部分命名经过修改)

定位到报错位置如下:

Gateway gatewayByAddr = getByAddr(addr);

该方法的实现细节如下:

public Gateway getByAddr(String addr) {
        LambdaQueryWrapper<Gateway> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Gateway::getAddr, addr);
        return gatewayMapper.selectOne(wrapper);
    }

再执行到最后的 selctOne 方法后报错

重现步骤(如果有就写完整)

在同 Service 下存在相同调用 selectOne 方法,相同错误,定位如下:

Gateway gatewayByCode = getByCode(code);

该方法的实现细节如下:

public Gateway getByCode(String code) {
        LambdaQueryWrapper<Gateway> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Gateway::getCode, code);
        return gatewayMapper.selectOne(wrapper);
    }

同执行到最后的 selctOne 方法后报错

使用普通 QueryWrapper 替换 LambdaQueryWrapper,出现同样错误

报错信息

启用MyBatis-Plus控制台日志后,出错时出现的日志如下:

Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2d728dba]
JDBC Connection [HikariProxyConnection@1244871285 wrapping com.mysql.cj.jdbc.ConnectionImpl@47d87bcf] will be managed by Spring
--------- 正常执行的SQL日志,因企业原因不便展示 ----------
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2d728dba]
Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2d728dba] from current transaction
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2d728dba]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2d728dba]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2d728dba]

捕获到的 Exception 信息如下: "nested exception is org.apache.ibatis.binding.BindingException: Parameter 'status' not found. Available parameters are [ew, param1]"


可见出现了不存在的参数 status

miemieYaho commented 1 year ago

无法定位

miemieYaho commented 1 year ago

你应该检查你们的问题

ghost commented 1 year ago

将selectOne 方法改为 selectList 后 获取第 0 条数据,同样错误

很高兴我看到了你们甩锅的姿势,你们自己的方法说是我的错误,很好

从今日起本人不再支持MyBatis-Plus项目

miemieYaho commented 1 year ago

你要笑死大爷了,别人都没问题就你有问题,你还觉得是别人的问题这不是搞笑? 你不支持就不支持呗,说得好像欠你似的,也就小屁孩说得出这么sb的话来,真的愚蠢

ghost commented 1 year ago

呵呵,连sql都没执行就出错,我都定位到就是 selectOne 的问题了,前前后后重写了不知道多少次都是一样的问题 如果sql执行出错,那肯定是我自己的问题,你连sql都没执行就出错了,难道还能是我的问题,搞笑 自己有问题自己不承认,甩锅的速度那叫一个快 啧啧啧,难怪一大堆人差评

qmdx commented 1 year ago

请检查 xml 中是不是重写了 selectList 方法?

miemieYaho commented 1 year ago

就你这点能力你也就这样了,还甩锅?等你出个bug定位来打脸,出不来请你回家种地去吧,种地更适合你