开发者

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

开发者 https://www.devze.com 2024-01-25 10:21 出处:网络 作者: MartinRY
目录SpringBoot搭建MyBATisPlus中selectList遇到LambdaQueryWrapper报错mybatisPlus LambdaQueryWrapper.select报错避坑错误示范正确的写法总结SpringBoot搭建MyBatisPlus中selectList遇到LambdaQueryWrapper报错
目录
  • SpringBoot搭建MyBATisPlus中selectList遇到LambdaQueryWrapper报错
  • mybatisPlus LambdaQueryWrapper.select报错避坑
    • 错误示范
    • 正确的写法
  • 总结

    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) 会报错

    Strin编程客栈g name = "Spring";
            LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();
            lqw.like(name != null,Book::getName,name);
            bookDao.selectList(lqw);

    org.mybatis.spring.MyBati编程客栈sSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaLuating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptpythonyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [Java.lang.ExceptionInInitializerError]

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

    mybatisPlus LambdaQueryWrapper.select报错避坑

    mybatisPlus 中LambdaQueryWrapper 的 selecphpt编程客栈 方法只能调用一次,如果调用第二次就会覆盖第一次

    比如,我有一个 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 也是同理

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消