irpas技术客

MybatisPlusException: can not use this method for “getSqlFirst“_you_get_me_there

irpas 1428

1.环境说明: mybatis-plus-boot-starter: 3.3.2 2.异常位置: 10:23:09.492 | http-nio-80-exec-1 | ERROR | o.a.c.c.C.[.[.[.[dispatcherServlet] -> Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew != null and ew.sqlFirst != null'. Cause: org.apache.ibatis.ognl.OgnlException: sqlFirst [com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not use this method for "getSqlFirst"]] with root cause com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not use this method for "getSqlFirst" at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:49) ... 3.触发异常的代码: LambdaQueryChainWrapper<LibInfo> lq = this.lambdaQuery(); int sum = lq.orderByAsc(LibInfo::getLibOrder).count(); 4.解决办法: LambdaQueryWrapper<LibInfo> lq = Wrappers.lambdaQuery(); int sum = lq.orderByAsc(LibInfo::getLibOrder).count(); 5.触发原因查找过程分析:

首先到mybatisPlus官网

依次选择 [指南->核心功能->CRUD接口]

可以看到里面需要的都是Wrapper<T>接口类型实现类的参数. 但里面通篇都没有讲如何获取这个Wrapper类型

接下来我们进入[指南->核心功能->条件构造器]

从头读到尾后发现官方给出的构建方式只有一行

mysqlMapper.getAll(Wrappers.<MysqlData>lambdaQuery().eq(MysqlData::getGroup, 1));

这里面用到的就是解决方案里面的查询方法参数

6. this.lambdaUpdate()方法和this.lambdaQuery()方法是做什么的?

这两个方法的返回值是LambdaUpdateChainWrapper和LambdaQueryChainWrapper类型(都有Chain字符串)

再结合 [指南->核心功能->CRUD接口]里面的[Chain]小节,可以推断他们是用来链式查询并修改和删除的(以下是原文):

// 链式查询 普通 QueryChainWrapper<T> query(); // 链式查询 lambda 式。注意:不支持 Kotlin LambdaQueryChainWrapper<T> lambdaQuery(); // 示例: query().eq("column", value).one(); lambdaQuery().eq(Entity::getId, value).list(); // 链式更改 普通 UpdateChainWrapper<T> update(); // 链式更改 lambda 式。注意:不支持 Kotlin LambdaUpdateChainWrapper<T> lambdaUpdate(); // 示例: update().eq("column", value).remove(); lambdaUpdate().eq(Entity::getId, value).update(entity); 7.导致开发者迷惑的是Wrappers类没有单独讲解

官方的坑,最坑爹


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #can #not #use #This #method #for #getSqlFirst