iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >mybatis的test坑怎么解决
  • 452
分享到

mybatis的test坑怎么解决

2023-07-05 19:07:48 452人浏览 安东尼
摘要

今天小编给大家分享一下mybatis的test坑怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。概述mybatis使用

今天小编给大家分享一下mybatis的test坑怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

概述

mybatis使用xml过程中我们经常会遇到要进行动态sql的判断,如使用if标签和choose标签中的when标签,都会遇到test条件判断,test的条件判断采用的ognl语句。

我遇到的坑是这样的:

<select id="myFunction">    select * from student where 1=1    <if test="status!=null and status!='' and status==0">        and 2=2    </if>    <if test="status!=null and status!='' and status!=0">        and 3=3    </if></select>

然后当 status=1的时候程序能狗正常运行并添加条件,但是当 status=0的时候死活无法进入第一个条件判断(当时改变了多种写法都不行,当时心中千万个草泥马就过去了)。

问题原因

最后一直跟踪查找原因,终于找到了错误的地方,以及出处。

原因就是如下语句:

status!=null and status!=‘' and status==0

是不成立的,因为status是Integer类型,当进行status!=null和status==0的判断都是没有问题的,但是在判断status!='&lsquo;的时候问题就来了,既然这个属性字段是Integer类型如何进行字符串的判空呢?

mybatis的test坑怎么解决

看这个断点截图,当status参数为0的时候进行判断status!=&rsquo;&lsquo;的判断的时候进入这个位置,由断点的位置可以知道,需要比较的是 0 和 &rsquo;&lsquo;是否相等,但是这两个数据连类型都不同怎么能相等呢,但是mybatis进行了转换比较,但你的参数类型是不是基础数据类型以及其包装类的时候,他会把你的这个空进行如下转换:

mybatis的test坑怎么解决

由这个图我们知道,最后这个0被转换为 0.0 ,而这个 &rsquo;&lsquo; 被转换为0.0,也就是说这个时候的判断就变成了0.0与0.0的判断。

所以最后在test语句中判断参数值如下

0=='‘ //是成立的

就是成立的。

也就说当我们的status=0的时候进行test的参数判断:

status!=null and status!=‘' and status==0

就变成了

status!=null and status!=0 and status==0

所以这个判断语句永远都不可能成立。

问题解决

既然我们知道了原因,那么解决方案就是写判断语句ognl的时候一定要按照数据类型进行,不要写不属于该参数类型的判断方式。

如下:

status!=null and status==0

这样就可以了。

以上就是“mybatis的test坑怎么解决”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: mybatis的test坑怎么解决

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mybatis的test坑怎么解决
    今天小编给大家分享一下mybatis的test坑怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。概述mybatis使用...
    99+
    2023-07-05
  • mybatis中if-test数字判断的坑及解决
    目录if-test数字判断的坑mybatis的test判断注意事项if-test数字判断的坑 在项目中偶然发现一个判断数字的if没有起任何作用,代码如下 <if test="t...
    99+
    2024-04-02
  • mybatis if test判断BigDecimal遇到的坑及解决方法是什么
    这篇“mybatis if test判断BigDecimal遇到的坑及解决方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获...
    99+
    2023-07-05
  • MyBatis+MyBatisPlus中遇到的坑怎么解决
    这篇文章主要介绍了MyBatis+MyBatisPlus中遇到的坑怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis+MyBatisPlus中遇到的坑怎么解决文章都会有所收获,下面我们一起来看...
    99+
    2023-07-05
  • js正则test匹配的踩坑及解决
    目录引言这样去匹配,有什么问题吗?为什么是 true 、false 、true 怎么解决呢?引言 本瓜相信你一定经常用以下这种最最简单的正则来判断字符串中是否存在某个子字符(别说了,...
    99+
    2024-04-02
  • Mybatis Plus使用@TableId坑怎么解决
    这篇文章主要讲解了“Mybatis Plus使用@TableId坑怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis Plus使用@TableId坑怎么...
    99+
    2023-06-21
  • 关于Mybatis动态sql中test的坑点总结
    目录总结Mybatis动态sql中test的坑判断相等的注意点判断字符是否相等动态sql标签的小陷阱下面先举个正常的例子总结Mybatis动态sql中test的坑 在mybatis中...
    99+
    2024-04-02
  • mybatis中的if test判断入参值问题怎么解决
    本文小编为大家详细介绍“mybatis中的if test判断入参值问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis中的if test判断入参值问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-06-30
  • mybatis mapper.xml注释带参数的坑怎么解决
    这篇“mybatis mapper.xml注释带参数的坑怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“my...
    99+
    2023-06-26
  • mybatis配置mapper-locations的坑及解决
    目录mybatis配置mapper-locations的坑mapperLocations配置失效问题根源解决mybatis配置mapper-locations的坑 很多时候想把xml...
    99+
    2024-04-02
  • 解决mybatis-plus自定义xml的坑
    目录mybatis-plus自定义xml的坑1、properties文件没有指明xml文件路径2、没有扫描mapper的配置类3、xml文件命名空间位置没写对自定义xml的模板myb...
    99+
    2024-04-02
  • mybatis的坑-integer类型为0的数据if test失效问题
    integer类型为0的数据if test失效 mybatis的where动态判断语句if test 遇到tinyint类型为0的数据失效 发现一个mybatis的坑,有个...
    99+
    2024-04-02
  • mybatisplus的坑怎么解决
    这篇文章主要讲解了“mybatisplus的坑怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatisplus的坑怎么解决”吧!mybatisplus的坑 insert标签ins...
    99+
    2023-06-21
  • MyBatis sql中test怎么判断Boolean
    这篇文章给大家分享的是有关MyBatis sql中test怎么判断Boolean的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mybatis sql中test判断Boolean三种方式<selec...
    99+
    2023-06-26
  • mybatis中的test语句失效怎么办
    这篇文章主要介绍了mybatis中的test语句失效怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mybatis test语句失效正常情况下,写动态sql的if tes...
    99+
    2023-06-29
  • mybatis if test不为空字符串且不为null的问题怎么解决
    这篇文章主要介绍“mybatis if test不为空字符串且不为null的问题怎么解决”,在日常操作中,相信很多人在mybatis if test不为空字符串且不为null的问题怎么解决问题上存在疑...
    99+
    2023-06-29
  • Mybatis Plus使用@TableId之坑及解决
    目录Mybatis Plus使用@TableId之坑1. TableId 可选类型2. @TableId(value = “id”,type= IdType.AUTO)3. @Tab...
    99+
    2024-04-02
  • mybatis mapper.xml 注释带参数的坑及解决
    目录mybatis mapper.xml 注释带参数的坑mybatis的xml中注释需谨慎报错内容小结一下mybatis mapper.xml 注释带参数的坑 最近做一个很简单的统计...
    99+
    2024-04-02
  • MyBatis中使用foreach循环的坑及解决
    目录使用foreach循环的坑正确写法为忽现的Mybatis foreach失效记录解决方案使用foreach循环的坑 我们首先看一段MyBatis中使用foreach循环的sql:...
    99+
    2024-04-02
  • 怎么解决Static坑
    这篇文章主要介绍“怎么解决Static坑”,在日常操作中,相信很多人在怎么解决Static坑问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决Static坑”的疑惑有所帮...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作