首页 > 数据库 >MybatisPlus Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 

MybatisPlus Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 

时间:2024-08-23 10:52:01浏览次数:5  
标签:ibatis java getId BuilderException apache org ew null Order

报错信息:

org.mybatis.spring.MyBatisSystemException: null
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:97)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)
...

Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew != null and ew.sqlSet != null'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSet [com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not use this method for "getSqlSet"]
    at org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:48)
    at org.apache.ibatis.scripting.xmltags.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:32)
    at org.apache.ibatis.scripting.xmltags.IfSqlNode.apply(IfSqlNode.java:34)
    at org.apache.ibatis.scripting.xmltags.MixedSqlNode.lambda$apply$0(MixedSqlNode.java:32)
...

Caused by: org.apache.ibatis.ognl.OgnlException: sqlSet
Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not use this method for "getSqlSet"
    at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:49)
    at com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper.getSqlSet(LambdaUpdateChainWrapper.java:63)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.apache.ibatis.ognl.OgnlRuntime.invokeMethodInsideSandbox(OgnlRuntime.java:1245)
...

报错原因:

//serviceImpl代码
baseMapper.update(this.lambdaUpdate().eq(Order::getId, order.getId()).set(Order::getStatus, Order.Status.STORE_SUBMIT.getCode()) .set(Order::getUpdatedId, sysUser.getId()).set(Order::getUpdatedTime, LocalDateTime.now()))

//注意this.lambdaUpdate()的只用方法,该方法返回对象LambdaUpdateChainWrapper<T>,虽然该对象也是Wrapper<T>的子类,所以下面写法不会编译报错,但是执行时会报错,LambdaUpdateChainWrapper<T>对象不能直接用baseMapper对象去执行
//this.update()方法与this.lambdaUpdate()相同
//this.lambdaUpdate()的正确用法如下(最后直接调用.update()方法去执行修改sql,或调.remove()方法执行删除sql)
this.lambdaUpdate().eq(Order::getId, order.getId()).set(Order::getStatus, Order.Status.STORE_SUBMIT.getCode())
.set(Order::getUpdatedId, sysUser.getId()).set(Order::getUpdatedTime, LocalDateTime.now()).update()

//同样this.lambdaQuery()的正确用法是调.list()方法执行查询sql,代码如下
//this.query()方法与this.lambdaQuery()相同
this.lambdaQuery().eq(Order::getId, order.getId()).list();


 解决方法:使用正确的调用方式

//baseMapper.selectList()的正确调用方式如下
baseMapper.selectList(Wrappers.lambdaQuery(Order.class).eq(Order::getId, "id"));
baseMapper.selectList(new LambdaQueryWrapper<Order>().eq(Order::getId, "id"));

//baseMapper.update()的正确调用方式如下
baseMapper.update(Wrappers.lambdaUpdate(Order.class).eq(Order::getId, "id").set(Order::getStatus, 1));
baseMapper.update(new LambdaUpdateWrapper<Order>().eq(Order::getId, "id").set(Order::getStatus, 1));

希望对你有帮助

标签:ibatis,java,getId,BuilderException,apache,org,ew,null,Order
From: https://www.cnblogs.com/luolei0120/p/18375456

相关文章

  • devexpress gridview master,detail视图 focuseRowHandle 同步选中
    gridview1是主视图,gridview2是其子视图gridview1中的多行就对应了多个gridview2实例,那么通时展开多个gridview1中的多个行,并且在这些展开的行中点不同gridview2的行时,gridview1的焦点行是不会自动切换的的需要做如下处理(这里还包括了了gridview2中的checkboxedit)......
  • 05-03 Map Persistent Objects to Database Views(将持久对象映射到数据库视图 )
    MapPersistentObjectstoDatabaseViews(将持久对象映射到数据库视图)CreateaPersistentClass(创建持久类)Createapersistentclass.Theclassnameshouldmatchtheviewname.创建一个持久类。类名应与视图名匹配。AssignthePersistentattributetotheper......
  • Jetpack业务架构—四件套(Lifecycle、ViewModel、LiveData、DataBinding)
            Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作。1. AndroidJetpack组件的优势:        Jetpack推出的主要目的是为了能够......
  • 【New SQL】 -- CockroachDB license change
    1、CockroachDB发布了修改开源协议的releases北京时间2024-08-16,CockroachDB发布了修改开源协议的releases。原文链接:LicensingFAQsEvolvingourself-hostedofferingandlicensemodelCockroachDBLicensechange(again)|ProductTalk2、引发讨论(1)国内N......
  • 多模态学习之论文阅读:《Pre-gating and Contextual Attention Gate — A new fusion m
    《Pre-gatingandContextualAttentionGate—Anewfusionmethodformulti-modaldatatasks》 -2024.11 影响因子7.9  (一)要点提出一种新的多模态数据融合方法,即PCAG(Pre-gatingandContextualAttentionGate),以解决现有跨模态交互学习中的噪声问题和不确定性问......
  • new
    1.变位词所谓"变位词"是指两个词之间存在组成字母的重新排列关系如:heart和earth,python和typhon为了简单起见,假设参与判断的两个词仅由小写字母构成,而且长度相等思路1:建一个哈希表,将第一个单词中的字母存入到哈希表中。第二个单词的字母与哈希表对比,有一个相同的就从哈......
  • IIS: URL rewrite转发请求
    先检查本地是否存在IIS,存在则跳过IIS:启用IIS-le.li-博客园(cnblogs.com)双击打开"InternetInformationServices(IIS)管理器" 点击管理器名称 缺少“ApplicationRequestRouter”下载网址:https://www.iis.net/downloads/microsoft/application-request-routi......
  • SAP EWM PMR
    目录1简介2业务流程3业务操作4主数据设置4.1ERP主数据4.2EWM主数据5后台配置5.1主数据5.2GI流程5.3仓库内部移动流程5.4 仓库任务设置5.5集成5.6EWM链接1简介EWMPMR分2部分功能,第一是MES-DrivenStaging,第二是AdvancedProductionIn......
  • 针对ShotGun的ServerRewind
    区别虽然也是HitScane,但其可以对多个角色或者多个部位造成伤害更改首先是之前在FFramePackage结构体中,需要增添一个成员变量,用来表示该结构体中的BoxCollision属于哪个敌人。而之前使用的ConfirmHit返回的校验击中头部和身体的结构体,需要为ShotGun创建类似的,其内有两个TMap类......
  • vSphere5.12.VMware View桌面虚拟化系统
    第一部分view桌面系统介绍vmwareview是全球首款针对桌面虚拟化的企业级解决方案,据gartner2010年4月针对全球使用桌面虚拟化数据分析vmwareview市场占用率高达56%.vmwareview已经在中国掀起了一股桌面虚拟化的热浪,vmwareview虚拟桌面技术已经成为it界的讨论的焦点.目前最......