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

 更新时间:2022年03月12日 10:10:06   作者:xinyuezitang  
这篇文章主要介绍了mybatis if test 不为空字符串且不为null的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

if test不为空字符串且不为null

在mybatis中if test 

判断不为空字串和null的时候,报了sql 语法错误

xml文件:

WHERE enable =1
<if test="keyword != null AND keyword != ''">
        AND ( mac_id = #{keyword} )
        OR ( user_id = #{keyword} )
 </if>

postman工具报错如下:

在这里插入图片描述

原因:

if 判断中, 出现字母大小写错误, 不符合mybatis 语法规范

在这里插入图片描述

在mybatis中, if test 语法

1 判断不为null

WHERE 1=1
<if test="keyword != null ">
        AND  user_id = #{keyword} 
</if>

2 判断不为空字符串

WHERE 1=1
<if test="keyword != '' ">
        AND  user_id = #{keyword} 
</if>

3 判断不为null 且 不为空字符串

WHERE 1=1
<if test="keyword != null and keyword != ''">
        AND  user_id = #{keyword} 
</if>

Controller层 —> 对应xml 文件

我们在获取列表时,通常会根据关键词进行精确或模糊查询,就会对关键词进行非空或者非null的判断。如下:

Controller层请求参数keyword请求参数默认值Dao层Xml 文件
@RequestParam(value = “keyword”, required = false) String keywordnullif test="keyword != null "
@RequestParam(value = “keyword”, required = false, defaultValue = “”) String keyword空字符串if test="keyword != ‘’ "
/不清楚默认值都可以if test=“keyword != null and keyword != ‘’”
参数默认值Dao层Xml 文件
从其他渠道的获取的数据或关键词不清楚默认值if test=“keyword != null and keyword != ‘’”

mybatis把0当做空字符串

在开发中,一般在sqlmap中都会判断参数是否为null,以及是否为空字符串

当参数为Int类型 0时,myBatis自动把0定义为空字符串“”

我们在可能入参为0的地方多加一个判断

 <if test="authorizeAmount != null and ''!= authorizeAmount or authorizeAmount==0">
            ,a.AUTHORIZE_AMOUNT = #{authorizeAmount,jdbcType=VARCHAR}
        </if>

这是一个比较容易粗心的地方,出问题也不容易排查,记录下来提醒自己!

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

相关文章

  • SpringBoot使用jsoup爬取HTML的方法

    SpringBoot使用jsoup爬取HTML的方法

    jsoup 是一款 Java 的 HTML 解析器,它提供了一套非常便利的 API,可通过 DOM、CSS 通过类似于 JQuery 的操作方法来取出和操作数据,这篇文章主要介绍了SpringBoot使用jsoup爬取HTML,需要的朋友可以参考下
    2024-02-02
  • 使用java代码实现保留小数点的位数

    使用java代码实现保留小数点的位数

    因为个人应用的需要,所以就写个简单点的了。希望大家都给给建议,共同学习。需要的朋友也可以参考下
    2013-07-07
  • Java实现邮件找回密码功能

    Java实现邮件找回密码功能

    这篇文章主要为大家详细介绍了Java实现邮件找回密码功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • mybatis generator只能生成insert和selectAll的操作

    mybatis generator只能生成insert和selectAll的操作

    这篇文章主要介绍了mybatis generator只能生成insert和selectAll的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringBoot 返回Html界面的操作代码

    SpringBoot 返回Html界面的操作代码

    这篇文章主要介绍了SpringBoot 返回Html界面的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • java 串口通信实现流程示例

    java 串口通信实现流程示例

    这篇文章主要介绍了java 串口通信实现流程示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 怎么把本地jar包放入本地maven仓库和远程私服仓库

    怎么把本地jar包放入本地maven仓库和远程私服仓库

    这篇文章主要介绍了怎么把本地jar包放入本地maven仓库和远程私服仓库的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Mybatis plus枚举处理器的具体使用

    Mybatis plus枚举处理器的具体使用

    在开发中,数据库表中的字段很常见会使用枚举类型来表示一些固定的取值范围,本文主要介绍了Mybatis plus枚举处理器的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • mybatis Map查询结果下划线转驼峰的实例

    mybatis Map查询结果下划线转驼峰的实例

    这篇文章主要介绍了mybatis Map查询结果下划线转驼峰的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Java对中文进行排序的实现示例

    Java对中文进行排序的实现示例

    工作中,我们经常会遇到需要进行各种排序的需求,本文主要介绍了Java对中文进行排序的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02

最新评论