「问题」如何解决 MyBatis 中的 if 标签无法识别参数为 0 的问题

这篇具有很好参考价值的文章主要介绍了「问题」如何解决 MyBatis 中的 if 标签无法识别参数为 0 的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如何让参数为0也能进入if标签的方法中?

1、问题

mybatis中的自己写的判断方法,若参数buildingType=0,则不会进入到方法中

<if test="searchForm.buildingType != null and searchForm.buildingType !=''">
      and a.building_type=#{searchForm.buildingType}
</if>

2、原因

mybatis源码如下所示:

return s.length() == 0 ? 0.0D : Double.parseDouble(s);

代码解释:这是一个将字符串转换为 double 类型的操作。代码中使用了三元运算符 ?: 来判断字符串的长度是否为 0。如果字符串为空,则返回 0.0D(double 类型的零值),否则使用 Double.parseDouble() 方法将字符串转换为 double 类型。这段代码的作用是将一个字符串转换为 double 类型的数值,若buildingType=0,则结果为0.0

重点: Mybatis 在判断整数0.0的时候会把默认为 ’ ’ ,所以判断 !=’ '的条件为false 不会进去判断条件

3、怎么解决这个问题?

1. 错误方法的方法

<if test="searchForm.buildingType != null and searchForm.buildingType !=''">
     and a.building_type=#{searchForm.buildingType}
 </if>

buildingType=0不会进入该方法

2.不推荐的方法

<if test="searchForm.buildingType != null and searchForm.buildingType ==''">
     and a.building_type=#{searchForm.buildingType}
 </if>

虽然这样buildingType=0的时候可以进入方法,但是当buildingType=''的时候也可以进入这个方法,造成查询出的数据不正确,故不推荐这样写

3.正确方法

<if test="(searchForm.buildingType != null and searchForm.buildingType !='') or searchForm.buildingType==0.0">
      and b.building_type=#{searchForm.buildingType}
</if>

参数buildingType=0buildingType=1buildingType=2 ...,都能进入该方法,buildingType=''空字符串的时候不能进入该方法文章来源地址https://www.toymoban.com/news/detail-611518.html

到了这里,关于「问题」如何解决 MyBatis 中的 if 标签无法识别参数为 0 的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何配置jsconfig.json文件解决VSCode中无法识别@别名引用的问题

    在现代web开发中,使用别名来引用模块已经成为了一个非常常见的做法。这样可以使得代码更加易读、易维护。然而,在使用VSCode进行开发时,如果不正确地配置jsconfig.json文件,就会遇到一些问题。 其中一个比较常见的问题是,在使用“@”符号来引用模块时,无法通过Ctr

    2023年04月10日
    浏览(40)
  • MyBatis Plus Mapper.xml映射文件常用标签<if>、<foreach>、#{}、${}等

    一、判断 Integer、Long 等常数类参数 注意:判断常数类参数,只能判断 != null,不能判断 != \\\'\\\' 否则判断不会生效 二、判断 String 字符串类参数 注意:判断字符串类参数可以判断 != \\\'\\\' 三、判断参数值与指定的值,是否相等或不相等 注意: 1、判断 Integer、Long 等常数类型等于

    2024年02月09日
    浏览(58)
  • 在Mybatis中写动态sql这些标签:if、where、set、trim、foreach、choose的作用是什么,怎么用?

    在 MyBatis 中,您可以使用动态 SQL 标签来构建灵活的 SQL 查询,以根据不同的条件生成不同的查询语句。以下是这些标签的作用和用法: 1. **`if` 标签:** 用于根据某个条件动态地包含或排除 SQL 片段,test:可以写条件。    示例用法:        ```xml    select id=\\\"getUserList\\\" param

    2024年02月11日
    浏览(48)
  • 如何解决win11“无法枚举容器中的对象,访问被拒绝”、“右键新建只有文件夹,没有其他选项”的问题。

    形成原因:是文件夹Users权限的问题 解决方法:修改User权限即可 出错原因 我本以为按照网上的教程,右键E盘属性,找到安全选项卡,然后更改高级,然后更改所有者,然后开启 使用可从此对象继承的权限项目替换所有子对象的权限项目P,,,,等等操作。但是依然会报错

    2024年02月02日
    浏览(49)
  • css解决uniapp使用image标签图片无法撑满全屏问题

    本片文章主要讲解了如何解决,开发中遇到需要让图片撑满全屏,但实际图片会留空白的问题。 示例虽然是uniapp的版本,但是同样适用于h5版本。 代码结构很简单,就是一个图片标签 效果图: vertical-align 用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方

    2023年04月09日
    浏览(43)
  • mybatis使用xml中的if-else/choose

    最近需要使用 xml 文件来实现一些增删改查,此文对 其中的 if-else 加以说明 背景: 有一个引用类,假设叫 Student 现在我们查询条件也被封装成一个引用类,例如: 那么使用 xml 怎么来使用和接收呢? 首先肯定是在 mapper 里面有一个方法 然后在 xml 文件中写这个方法的具体实

    2024年04月23日
    浏览(38)
  • bios无法识别usb键盘问题解决备忘

    戴尔的T3600工作站bios中无法使用usb键盘,参考: USB 3.0 和 USB 2.0 在 Precision T3600、T5600 或 T7600 系统上出现故障 | Dell 中国 https://www.dell.com/support/kbdoc/zh-cn/000141904/usb-3-0-%E5%92%8C-usb-2-0-%E5%9C%A8-precision-t3600-t5600-%E6%88%96-t7600-%E7%B3%BB%E7%BB%9F%E4%B8%8A%E5%87%BA%E7%8E%B0%E6%95%85%E9%9A%9C  所以就是

    2024年02月11日
    浏览(56)
  • 如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?

    在使用若依前后端分离打包部署到服务器上后,可能会出现主包无法找到从包中的文件的问题,这个问题通常是由于资源文件没有正确地打包到 jar 包中导致的。本文将介绍如何解决这个问题,包括如何在 Java 代码中访问 jar 包中的资源文件、如何将资源文件复制到系统临时目

    2024年02月22日
    浏览(58)
  • 【问题解决】Android Studio 无法连接手机(荣耀90)无法识别手机usb

    问题描述: 使用AS调试的时候遇到一个问题,由于是重装后的电脑,什么都没配置,但是两个旧手机都在安装SDK tools里的Google usb driver后直接连上AS,而我的新手机却死活连不上,查了一下午,啥方法都试了,还是连不上 问题解决: 最终发现在开发人员选项-网络 里面有一个

    2024年02月07日
    浏览(86)
  • 【MyBatis】四、MyBatis中的动态SQL标签

    动态SQL语句是动态的拼接Mybatis中SQL语句的情况,可以动态的在Mybatis中使用SQL if语句的xml文件: 传入对象来进行调用: where标签中的and会被自动去掉,并且若没有合适的内容,则不会添加where 注意:where标签只能去掉条件前的and、五福去掉条件后的and trim标签会在其内容

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包