返回顶部
首页 > 资讯 > 精选 >mybatis中的test语句失效怎么办
  • 372
分享到

mybatis中的test语句失效怎么办

2023-06-29 11:06:14 372人浏览 泡泡鱼
摘要

这篇文章主要介绍了mybatis中的test语句失效怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mybatis test语句失效正常情况下,写动态sql的if tes

这篇文章主要介绍了mybatis中的test语句失效怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

mybatis test语句失效

正常情况下,写动态sql的if test或when test语句时,条件引用为双引号括单引号

如下:

 <select id="sel1" resultType="User">          select * from tb_user          <where>              <choose>                  <when test="user != null and user != ''">                      and user = #{user}                  </when>                  <when test="passwd != null and passwd != ''">                      and passwd = #{passwd}                 </when>                 <otherwise>                     and 1 = 1                 </otherwise>             </choose>         </where> </select>

但是今天发现一个问题,当传入的值为0或者1时,sql失效不被执行。

如下:

<when test="user == '1‘ ">  and user = #{user}</when>

之后,发现是MyBatis自身解析的问题,在标签 中的内容,MyBatis是使用的OGNL表达式来进行解析的,这个地方需要注意下,单引号内有一个字符的情况下,OGNL会将其以 java 中的 char 类型进行解析,那么此时 char 类型与参数 String 类型用等号进行比较的时候结果都是false。

解决方案也很简单

就是把test 中的单个字符用双引号括起来。

<if test='param != "*"'>    <choose>          <when test='param.indexOf("sub") != -1'>                  </when>          <otherwise>                       </otherwise>      </choose> </if>

mybatis test判断注意事项

在使用mybatis进行判断的时候,一定要注意传入的数据类型与判断的目标值类型是否一致。

最近在一次开发过程,

误将一个传入的整型数据使用了下面的判断方式

<if test="appType != null and appType != ''">    and a.c_appType = #{appType}</if>

其中,appType是一个整型数据。可以看到,在test判断里面使用了 appType != ''。

在进行业务功能测试的时候发现,当传入的值是0时,该条件筛选没有起作用,通过调试发现,mybatis会将空字符串转换成double类型的0.0

如下图所示:

mybatis中的test语句失效怎么办

同样整数数据也会转换为double类型

如下图所示:

mybatis中的test语句失效怎么办

所以,mybatis在判断的时候,数字0和空字符串是相等的,而我们的if判断里,是两者不相等时该条件才会起作用。

因此,在使用mybatis判断的时候,一定要注意类型是否一致,数字类型就不要判断空字符串的情况了。

感谢你能够认真阅读完这篇文章,希望小编分享的“mybatis中的test语句失效怎么办”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: mybatis中的test语句失效怎么办

本文链接: https://lsjlt.com/news/324599.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mybatis中的test语句失效怎么办
    这篇文章主要介绍了mybatis中的test语句失效怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mybatis test语句失效正常情况下,写动态sql的if tes...
    99+
    2023-06-29
  • mybatis中的test语句失效处理方式
    目录mybatis test语句失效解决方案也很简单mybatis test判断注意事项误将一个传入的整型数据使用了下面的判断方式同样整数数据也会转换为double类型mybatis...
    99+
    2024-04-02
  • mybatis中update语句执行无效怎么解决
    这篇文章主要讲解了“mybatis中update语句执行无效怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatis中update语句执行无效怎么解决”吧!项目里myb...
    99+
    2023-06-21
  • SpringBoot Test类注入失败怎么办
    这篇文章将为大家详细讲解有关SpringBoot Test类注入失败怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如下所示本来 bookService的引用一直是null。导致每次测试都报空指针异常...
    99+
    2023-06-06
  • mybatis的坑-integer类型为0的数据if test失效问题
    integer类型为0的数据if test失效 mybatis的where动态判断语句if test 遇到tinyint类型为0的数据失效 发现一个mybatis的坑,有个...
    99+
    2024-04-02
  • MyBatis中怎么执行SQL语句
    在MyBatis中执行SQL语句可以通过Mapper接口和映射文件来实现。以下是一般步骤: 1、创建Mapper接口:在Mapper...
    99+
    2024-03-07
    MyBatis
  • MyBatis sql中test怎么判断Boolean
    这篇文章给大家分享的是有关MyBatis sql中test怎么判断Boolean的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mybatis sql中test判断Boolean三种方式<selec...
    99+
    2023-06-26
  • mybatis if test条件判断语句中的判断问题实例分析
    本文小编为大家详细介绍“mybatis if test条件判断语句中的判断问题实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis if test条件判断语句中的判断问题实例分析”文...
    99+
    2023-06-29
  • mybatis的test坑怎么解决
    今天小编给大家分享一下mybatis的test坑怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。概述mybatis使用...
    99+
    2023-07-05
  • MyBatis中SQL语句是怎么执行的
    MyBatis中的SQL语句执行流程大致如下: 配置文件:首先在配置文件(通常是mybatis-config.xml)中配置数据...
    99+
    2024-04-23
    MyBatis
  • php更新语句执行失败怎么办
    php更新语句执行失败的解决办法:1、打开相应的PHP文件;2、找到“update set name='1231' from xsb where sex= '...'”语句;3、修改更新语...
    99+
    2023-05-14
    php
  • 怎么在MyBatis中执行SQL语句
    这期内容当中小编将会给大家带来有关怎么在MyBatis中执行SQL语句,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。基础组件我们要理解 Mybatis 的执行过程,就必须先了解 Mybatis 中都有哪一...
    99+
    2023-06-15
  • mybatis的insert语句怎么使用
    MyBatis 的 insert 语句可以通过 XML 配置文件或者注解方式进行使用。1. XML 配置文件方式:在 Mapper ...
    99+
    2023-09-27
    mybatis insert
  • cookie失效怎么办
    如果你的cookie失效了,可以尝试以下方法:1. 清除浏览器缓存:打开浏览器设置,找到“清除缓存”或“清除浏览数据”的选项,勾选“Cookies和站点数据”选项,然后点击清除按钮。2. 重新登录:如果你使用的是需要登录的网站,尝试退出...
    99+
    2023-08-11
    cookie
  • css中line-height失效怎么办
    小编给大家分享一下css中line-height失效怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 一、行高失效标题问题启事: 检查你CSS中设置字体font-family技俩属...
    99+
    2024-04-02
  • angularJS的$watch失效怎么办
    小编给大家分享一下angularJS的$watch失效怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!$watch方法,它可...
    99+
    2024-04-02
  • MyBatis中怎么执行动态SQL语句
    MyBatis中执行动态SQL语句的方式是通过使用动态SQL语句的标签来实现。在MyBatis中,有以下几种常用的动态SQL标签: ...
    99+
    2024-04-09
    MyBatis
  • Java中怎么拼接SQL语句到mybatis的xml
    这篇文章将为大家详细讲解有关Java中怎么拼接SQL语句到mybatis的xml,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。关键语句:StringBuilder whereSql&n...
    99+
    2023-06-15
  • php setcookie 失效怎么办
    本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑php setcookie函数失效?最近在为一个网站写php后台的时候发现setcookie这个函数总是不能正常的设置cookie,通过var_dump()发现函数返回值...
    99+
    2021-04-21
    php setcookie
  • setcookie php 失效怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。setcookie php 失效怎么办?具体问题描述:PHP setcookie指定domain参数后,在IE下设置cookie失效了?解决方法下面的代码:在chro...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作