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

3.4.3.4

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

由于groovy方法引用报错

userService.lambdaQuery().eq(User::name, '123456').one()

但是好像报错了

nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfNormal'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [java.lang.ClassCastException: com.example.demo.Demo1ApplicationTests$_contextLoads_closure3$_closure4 cannot be cast to com.baomidou.mybatisplus.core.toolkit.support.SFunction]
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfNormal'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [java.lang.ClassCastException: com.example.demo.Demo1ApplicationTests$_contextLoads_closure3$_closure4 cannot be cast to com.baomidou.mybatisplus.core.toolkit.support.SFunction]
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
    at com.sun.proxy.$Proxy73.selectList(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
    at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:166)
    at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
    at com.sun.proxy.$Proxy81.selectList(Unknown Source)
    at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:174)
    at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)

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

报错信息

Comment From: qmdx

未做适配

Comment From: hgdhfq

groovy.zip 我用groovy编写了一些适配,可以使用我提供的适配包进行闭包链式调用。 使用方法: 1、修改Service继承类 原来的继承方式: interface ModelService extends IService<Model> 修改后的继承方式 interface ModelService extends IGService<Model>

2、链式调用修改 以前的方式:

modelService.lambdaQuery().eq(Model::getRefId , 56).last('limit 10').list()  //查询
modelService.lambdaUpdate()
                .set(Model::getOpen, 64.2951).set(Model::getClose, 44.3303)
                .eq(Model::getRefId , 55).eq(Model::getTime,1689859860).update()  //更新
modelService.lambdaUpdate()
                .eq(Model::getRefId , 55).eq(Model::getTime,1689859860).remove() //删除
   闭包调用方式:
modelService.closureQuery().eq(Model::getRefId , 56).last('limit 10').list() //查询
modelService.closureUpdate()
                .set(Model::getOpen, 64.2951).set(Model::getClose, 44.3303)
                .eq(Model.&getRefId , 55).eq(Model::getTime,1689859860).update()  //更新 (闭包支持两种写法  Model.&getRefId 和 Model::getRefId)
modelService.closureUpdate()
                .eq(Model.&getRefId , 55).eq(Model::getTime,1689859860).remove()  //删除