解决SpringBoot搭建MyBatisPlus中selectList遇到LambdaQueryWrapper报错问题

 更新时间:2024年01月23日 16:15:34   作者:MartinRY  
这篇文章主要介绍了解决SpringBoot搭建MyBatisPlus中selectList遇到LambdaQueryWrapper报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

SpringBoot搭建MyBatisPlus中selectList遇到LambdaQueryWrapper报错

在3.4.4版本中

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

在下面代码中,bookDao.selectList(lqw) 会报错

String name = "Spring";
        LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();
        lqw.like(name != null,Book::getName,name);
        bookDao.selectList(lqw);

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [java.lang.ExceptionInInitializerError]

但是在升级版本(3.5.1)后,则可以解决该问题

mybatisPlus LambdaQueryWrapper.select报错避坑

mybatisPlus 中LambdaQueryWrapper 的 select 方法只能调用一次,如果调用第二次就会覆盖第一次

比如,我有一个 user 表,我只想查询里面的 id 和name 字段。

错误示范

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.select(User::getId);
wrapper.select(User::getName);
List<User> users = subCompanyMapper.selectList(wrapper);

这样子查询出来的 users 中只会有 name 字段,id 字段为 null,是因为第二次调用 select 把第一次调用覆盖掉了。

正确的写法

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.select(User::getId, User::getName);
List<User> users = subCompanyMapper.selectList(wrapper);

这样查询出来的 users 就只会有 id 和 name 字段了。 QueryWrapper 也是同理

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mybatis if test判断BigDecimal遇到的坑及解决

    mybatis if test判断BigDecimal遇到的坑及解决

    这篇文章主要介绍了mybatis if test判断BigDecimal遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java设计模式之简单工厂模式简述

    java设计模式之简单工厂模式简述

    这篇文章主要为大家详细介绍了java设计模式之简单工厂模式,简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Java 设计模式以虹猫蓝兔的故事讲解建造者模式

    Java 设计模式以虹猫蓝兔的故事讲解建造者模式

    建造者模式,是一种对象构建模式 它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。本文将通过示例讲解建造者模式,需要的可以参考一下
    2022-04-04
  • Java中CountDownLatch进行多线程同步详解及实例代码

    Java中CountDownLatch进行多线程同步详解及实例代码

    这篇文章主要介绍了Java中CountDownLatch进行多线程同步详解及实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • dubbo集成zipkin获取Traceid的实现

    dubbo集成zipkin获取Traceid的实现

    这篇文章主要介绍了dubbo集成zipkin获取Traceid的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot快速整合通用Mapper的示例代码

    SpringBoot快速整合通用Mapper的示例代码

    后端业务开发,每个表都要用到单表的 增删改查 等通用方法,而配置了通用Mapper可以极大的方便使用Mybatis单表的增删改查操作,这篇文章主要介绍了SpringBoot快速整合通用Mapper,需要的朋友可以参考下
    2022-07-07
  • Java微信公众平台开发(10) 微信自定义菜单的创建实现

    Java微信公众平台开发(10) 微信自定义菜单的创建实现

    这篇文章主要为大家详细介绍了Java微信公众平台开发第十步,微信自定义菜单的创建实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • spring-boot-maven-plugin引入出现爆红(已解决)

    spring-boot-maven-plugin引入出现爆红(已解决)

    这篇文章主要介绍了spring-boot-maven-plugin引入出现爆红(已解决),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Spring如何基于aop实现事务控制

    Spring如何基于aop实现事务控制

    这篇文章主要介绍了Spring如何基于aop实现事务控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Log4j关闭Spring和Hibernate日志打印方式

    Log4j关闭Spring和Hibernate日志打印方式

    这篇文章主要介绍了Log4j关闭Spring和Hibernate日志打印方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12

最新评论