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>
      <if test="productDefinId != null" >
        and a.product_defin_id = #{productDefinId,jdbcType=VARCHAR}
      </if>
      <if test="productUid != null and productUid !=''">
        and a.product_uid = #{productUid,jdbcType=VARCHAR}
      </if>
      <if test="productKey != null" >
        and a.product_key = #{productKey,jdbcType=VARCHAR}
      </if>
      <if test="prouuctSecret != null" >
        and a.prouuct_secret = #{prouuctSecret,jdbcType=VARCHAR}
      </if>
      <if test="productPass != null" >
        and a.product_pass = #{productPass,jdbcType=VARCHAR}
      </if>
      <if test="productVisitPass != null" >
        and a.product_visit_pass = #{productVisitPass,jdbcType=VARCHAR}
      </if>
      <if test="createTime != null and createTime !=''" >
        and a.create_time = #{createTime,jdbcType=VARCHAR}
      </if>
      <if test="pageSize != null and pageNum !=null " >
         ORDER BY a.product_id DESC limit #{pageNum},#{pageSize}
      </if>
  </sql>

mybatis中if test判断数值字符串注意项

    <if test="cutList != null">
        <if test="isInterrupt == '1'.toString() ">
        AND A.basic_id IN (
         <foreach collection="cutList" item="item" index="index" separator="," >
                     #{item}
              </foreach>
                )
            </if>
            <if test="isInterrupt == '0'.toString() ">
        AND A.basic_id NOT IN (
        <foreach collection="cutList" item="item" index="index" separator="," >
                     #{item}
              </foreach>
                )
            </if>
    </if>                       

1. Mybatis中 if test 判断数值字符串注意项

if test 判断是否为某一数值字符串时需在数值字符串后加上toString()方法

如:

<if test="isInterrupt == '1'.toString() ">

2. Mybatis中遍历list入参

此处还有个知识点是mybatis使用foreach标签来遍历入参list。

如:

    <if test="isInterrupt == '1'.toString() ">
        AND A.basic_id IN (
        <foreach collection="cutList" item="item" index="index" separator="," >
                     #{item}
              </foreach>
                )
            </if>

collection为需遍历数组,item为当前循环的变量,index为计数器,separator=","指循环一次则以“,”分隔

这里IN 的()可以直接用open="(" close=")"属性设置

<foreach collection="cutList" item="item" index="index" open="(" close=")" separator="," >

总结

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

(0)

相关推荐

  • mybatis if test 不为空字符串且不为null的问题

    目录 iftest不为空字符串且不为null 在mybatis中iftest 在mybatis中,iftest语法 Controller层—>对应xml文件 mybatis把0当做空字符串 我们在可能入参为0的地方多加一个判断 if test不为空字符串且不为null 在mybatis中if test 判断不为空字串和null的时候,报了sql 语法错误 xml文件: WHERE enable =1 <if test="keyword != null AND keyword != '

  • mybatis中 if-test 数字判断的坑及解决

    目录 if-test数字判断的坑 mybatis的test判断注意事项 if-test数字判断的坑 在项目中偶然发现一个判断数字的if没有起任何作用,代码如下 <if test="timeType !=null and timeType!='' and timeType == '3'">     AND     ... </if> 经过查询资料发现,mybatis是用OGNL表达式来解析的,在OGNL的表达式中,数字’3’会被解析成字符,java是强类型的,ch

  • mybatis中的if test判断入参的值问题

    目录 mybatis if test判断入参的值 1.第一种判断方式 2.第二种判断方式 if test动态判断数字时出现的错误 mybatis中if test判断数字 mybatis if test判断入参的值 1.第一种判断方式 <if test=' requisition != null and requisition == "Y" '>    AND 表字段 = #{requisition} </if> 2.第二种判断方式 <if test=&qu

  • 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>

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

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

  • 详解java中String值为空字符串与null的判断方法

    Java空字符串与null的区别 1.类型 null表示的是一个对象的值,而不是一个字符串.例如声明一个对象的引用,String a=null. ""表示的是一个空字符串,也就是说它的长度为0.例如声明一个字符串String s="". 2.内存分配 String a=null:表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间. String s="":表示声明一个字符串类型的引用,其值为""空

  • Json_decode 解析json字符串为NULL的解决方法(必看)

    从APP端或从其他页面post,get过来的数据一般因为数组形式.因为数组形式不易传输,所以一般都会转json后再发送.本以为发送方json_encode(),接收方json_decode(),就解决的问题,结果发现,json_decode()后是NULL. 一般会反应是少了一个参数"true",但是回去看就是 json_decode($data,true); 那怎么还会是NULL呢?难道是编码,不会啊,接收后直接打印是一个完整json字符串的形式,在网上json解析网站,也是可以正常

  • vue前端传空值、空字符串的问题及解决

    目录 vue前端传空值及空字符串问题 vue空值报错问题 vue前端传空值及空字符串问题 在与后端调试接口时,经常接口里的参数会有空值,如果每次都要后端写判断,代码容易冗余. 所以就在前端做判断,在传值时先判断接口参数是否为空,为空则不传,有值则传参. 这里的例子是vue 列表接口获取全部列表值 一般列表页面都做了搜索和分页功能,所以带的参数就有:搜索字段.当前页码.页码最大数值(param,pageNo,pageSize)只是举例,不一定是一模一样 在加载列表接口时,这些条件会拼接到接口url

  • 详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法

    最近遇到了Mybatis-Plus updateById(),更新某一个字段为null,却发现没有更新成功,发现有一个博客记录挺好的.转载过来,方便自己看. 一.简介 因为最近在忙项目,好久都没有更新博客,最近在项目中刚好遇到一个问题,就是在使用MyBatis-Plus updateById(xxx)的时候,居然更新不了字符串或者null,本文分享两种解决方案,具体大家可以根据自己的需求选择一种方法解决. 二.原理 在实际项目中,难免更新的时候,有可能会把已有的值更新成空字符串或者null,但是

  • 为什么vue中不建议使用空字符串作为className

    目录 比较空字符串''和null 情况1:使用空字符串'' 情况2:使用null 情况3:使用undefined 使用对象的形式绑定class 使用 &&绑定class 案例1:isBold为false 案例2:isBold为null 空class就一定不对吗? 在我们用三元表达式给DOM元素设置class时,使用空字符串,会导致渲染出一个没有值的空class, 为了避免这种情况出现,可以使用null来代替空字符串. <!-- ❌ --> <div :class=&quo

  • MySQL如何判断字符串为NULL或者为空字符串

    目录 判断字符串为NULL或者为空字符串 MySQL中NULL和空字符串区别 一般会有以下疑问 注意事项 判断字符串为NULL或者为空字符串 函数名 说明 ISNULL(expr) 如果expr为null返回值1,否则返回值为0 IFNULL(expr1,expr2) 如果expr1值为null返回expr2的值,否则返回expr1的值 NULLIF(expr1,expr2) 如果expr1==expr2返回值为null,否则返回expr1的值:相当于case when expr1=expr2

  • 解决mybatis plus字段为null或空字符串无法保存到数据库的问题

    背景 项目中集成了mybatis plus, 今天在做后台的一个常规的增删改查时,发现字段值为null时,这个字段不会被保存到数据库 解决办法 在字段上加上 @TableField(strategy = FieldStrategy.IGNORED) strategy字段更新插入策略属性说明: IGNORED(0): "忽略判断", 所有字段都更新和插入 NOT_NULL(1): "非 NULL 判断", 只更新和插入非NULL值 NOT_EMPTY(2): &quo

随机推荐