Mybatis-plus 查询条件为空不生效问题及解决

目录
  • 查询条件为空不生效
  • 参数不生效

查询条件为空不生效

-- mybatis-plus eq方法
default Children eq(R column, Object val) {
    return this.eq(true, column, val);
}
public Children eq(boolean condition, R column, Object val) {
    return this.addCondition(condition, column, SqlKeyword.EQ, val);
}

以上是mybatis-puls wrapper条件构造器 eq方法源码,由上可见,condition不传递值的时候,条件构造器默认填充的true。

因此,当我们传入的条件,不一定有值时,可以在condition入参位置进行判定,当入参为空或者自定义情况下,条件不生效,否则查询条件都是生效的,即使为空。

例:

wrapper.eq(StringUtil.isNotBlank(infoVO.getMobile()), MsPlatformInfo::getPhone, infoVO.getMobile());

当infoVO.getMobile()为空时,StringUtil.isNotBlank(infoVO.getMobile()) = false,这种情况下,此条件在sql执行时不生效

参数不生效

在使用mybatis-plus 传递参数一直不生效

打印sql 也是不显示该参数

springboot yml文件添加打印sql配置

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志

最后搜到是del_flag参数类型错误!!!

由于传递的是Integer类型,但是在xml里面判断delFlag!=’’

只需要把 delFlag!=’’ 这个条件去掉就可以了

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

(0)

相关推荐

  • mybatis plus的3种查询方式(小结)

    本文是基于springboot框架下的查询.  一:基本配置: 1.仓库依赖 <repositories> <repository> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>

  • 详解MyBatis-Plus Wrapper条件构造器查询大全

    一.引言 那么那么那么今天来说下MP中强大的条件查询功能. 本章是基于上个案例来讲的:MyBaits-Plus 快速入门案例 二.具体操作 首先来说说基本的查询吧,根据主键或者简单的查询条件进行查询. /** * 通过单个ID主键进行查询 */ @Test public void selectById() { User user = userMapper.selectById(1094592041087729666L); System.out.println(user); } /** * 通过多

  • 巧妙mybatis避免Where 空条件的尴尬

    我就废话不多说了,大家还是直接看代码吧~ <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE <if test="state != null"> state = #{state} </if> </select> 如果state参数为空时,最终生成SQL语句为 SELECT * FROM BLOG WH

  • Mybatis Plus 字段为空值时执行更新方法未更新解决方案

    问题描述 系统测试过程中,同事测试出使用Mybatis Plus提供的封装方法UpdateById()时,字段从前台传入的数据为空值,但是执行方法后该字段未得到更新. 问题重现 因涉及到公司层面的模型.数据,本文都为测试模型和例子. 实体类: @Data @TableName("shop_item") public class ShopItem implements Serializable { private static final long serialVersionUID =

  • Mybatis-plus 查询条件为空不生效问题及解决

    目录 查询条件为空不生效 参数不生效 查询条件为空不生效 -- mybatis-plus eq方法 default Children eq(R column, Object val) {     return this.eq(true, column, val); } public Children eq(boolean condition, R column, Object val) {     return this.addCondition(condition, column, SqlKe

  • MybatisPlus查询条件为空字符串或null问题及解决

    目录 查询条件为空字符串或null问题 问题描述 解决办法 查询表的时候有些字段为空问题 亲测,已经解决 查询条件为空字符串或null问题 问题描述 工作种当使用mybatisplus框架进行条件查询时,会出现参数为空字符串或者null也走查询条件,写一篇文章记录一下. String name = "张三"; LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>(); lqw.eq(User::g

  • mybatis中查询结果为空时不同返回类型对应返回值问题

    今天在别人的代码基础上实现新需求,看到对于mybatis查询结果的判断不是很正确,如果查询结果为空就会异常,不知道大家有没有这样的疑惑:mybatis中resultType有多种返回类型,对于每种不同类型,查询结果为空时dao接口的返回值是一样的吗?接下来我就总结一下常见的几种情况. 第一种:resultType为基本类型,如string(在此暂且把string归纳为基本类型) 如果select的结果为空,则dao接口返回结果为null 第二种,resultType为基本类型,如int 后台报异

  • mybatis in查询条件过长的解决方案

    目录 mybatis in查询条件过长的解决 方法1:分次查询,将参数且分割成多个短的查询后合并 方法2:xml文件中编写sql mybatis大于1000的in查询的解决 论证如下 解决办法 mybatis in查询条件过长的解决 方法1:分次查询,将参数且分割成多个短的查询后合并 代码: int splitNum =(int) Math.ceil( (float) ids.length/999); //切片数量 List<String> itemIdList = new ArrayList

  • MySQL子查询中order by不生效问题的解决方法

    一个偶然的机会,发现一条SQL语句在不同的MySQL实例上执行得到了不同的结果. 问题描述 创建商品表product_tbl和商品操作记录表product_operation_tbl两个表,来模拟下业务场景,结构和数据如下: 接下来需要查询所有商品最新的修改时间,使用如下语句: select t1.id, t1.name, t2.product_id, t2.created_at from product_tbl t1 left join (select * from product_opera

  • mybatis if test 不为空字符串或null的解决

    目录 mybatis if test 不为空字符串或null mybatis中if test判断数值字符串注意项 总结 mybatis if test 不为空字符串或null <sql id="public_content"> <if test="productId != null and productId !=''" > and a.product_id = #{productId,jdbcType=VARCHAR} </if>

  • MyBatis if test 判断字符串相等不生效问题

    目录 MyBatis if test 判断字符串相等不生效 原因分析 解决方法 MyBatis if test 判断字符串相等的坑 1. if 判断字符串 2. if嵌套 MyBatis if test 判断字符串相等不生效 采用 MyBatis 框架操作 MySQL 数据库时,判断传入的字符串 priceFlag 值为"0"时,按照 price 属性降序排列,如下 xml 语句未生效: <if test="priceFlag != null and priceFlag

  • Mybatis 实现动态组装查询条件,仿SQL模式

    目的: 以前比较习惯使用Hibernate,后来觉得mybatis不能按我想要的自动组装为SQL查询条件,所以提供该工具类: 效果图: 如图所示,根据条件自动组装查询条件,下面来说一下实现方法: 1. ServiceImpl书写注意项 Page<SysLogin> resultPage = null; try { PageHelper.startPage(pager.getCurrentPage(), pager.getPageSize()); // 判断是否有分页 if (ObjectHel

  • mybatis-plus 如何判断参数是否为空并作为查询条件

    目录 判断参数是否为空并作为查询条件 只需要在eq条件构造器中只需要添加一句判断即可 StringUtils.isNullOrEmpty()方法作用是 附上isNullOrEmpty()源码 ---[拓展]--- 查询时某些字段为null的问题 判断参数是否为空并作为查询条件 @Override     public Page<DemandEntity> selectByDepartmentDisplay(DemandEntity demandEntity) {         EntityW

  • mybatis collection 多条件查询的实现方法

    mybatis collection 多条件查询的实现方法 前言: 业务需要通过mybatis 查询返回嵌套集合,嫌多次查询太麻烦,用自带的高级查询解决问题,下边是代码,已测试通过. 说下自己的理解,就是一个主查询结果集里面嵌套了子查询的结果集,可以是多个子查询,每个子查询的条件从主查询结果集中获取,返回值各自定义.collection 标签的property是主查询里面集合的名字,如果有多个就再写个collection,column是子查询参数,单参数直接写主查询结合返回结果,例如直接写上us

随机推荐