返回顶部
首页 > 资讯 > 后端开发 > Python >mybatis中的test语句失效处理方式
  • 632
分享到

mybatis中的test语句失效处理方式

2024-04-02 19:04:59 632人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录mybatis test语句失效解决方案也很简单mybatis test判断注意事项误将一个传入的整型数据使用了下面的判断方式同样整数数据也会转换为double类型mybatis

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

如下图所示:

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

如下图所示:

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

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

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

--结束END--

本文标题: mybatis中的test语句失效处理方式

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

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

猜你喜欢
  • mybatis中的test语句失效处理方式
    目录mybatis test语句失效解决方案也很简单mybatis test判断注意事项误将一个传入的整型数据使用了下面的判断方式同样整数数据也会转换为double类型mybatis...
    99+
    2024-04-02
  • mybatis中的test语句失效怎么办
    这篇文章主要介绍了mybatis中的test语句失效怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mybatis test语句失效正常情况下,写动态sql的if tes...
    99+
    2023-06-29
  • mybatis条件语句中带数组参数的处理
    目录mybatis条件语句中带数组参数这里给出一个示例这里有必要说明的是foreach标签中的collection属性mybatis多参数传递(其中包括数组)mapper接口mapp...
    99+
    2024-04-02
  • mybatis if test条件判断语句中的判断问题实例分析
    本文小编为大家详细介绍“mybatis if test条件判断语句中的判断问题实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis if test条件判断语句中的判断问题实例分析”文...
    99+
    2023-06-29
  • mybatis源码解读-Java中executor包的语句处理功能
    目录1.mybatis对多语句类型的支持2.mybatis的语句处理功能1.mybatis对多语句类型的支持 在mybatis映射文件中传参数,主要用到#{} 或者 ${}. #{}...
    99+
    2024-04-02
  • mybatis有时update语句执行无效的解决方案
    目录项目里mybatis有时update语句执行无效解决办法执行update语句后,数据没有被更新,也没有报错问题描述详细情况解决办法项目里mybatis有时update语...
    99+
    2024-04-02
  • 在 SQL 语句中处理 NULL 值的方法
    在日常使用数据库时,你在意过NULL值么? 其实,NULL值在数据库中是一个很特殊且有趣的存在,下面我们一起来看看吧; 在查询数据库时,如果你想知道一个列(例如:用户注册年限 USE...
    99+
    2024-04-02
  • mybatis的executor包语句处理功能源码分析
    这篇“mybatis的executor包语句处理功能源码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mybatis的e...
    99+
    2023-06-29
  • Linux目录失效的文件句柄怎么处理
    当Linux目录中的文件句柄失效时,可以尝试以下几种处理方法: 重新启动进程:如果文件句柄失效是由于进程打开的文件句柄过多导致的...
    99+
    2023-10-25
    Linux
  • mybatis大于小于号的处理方式
    本篇内容主要讲解“mybatis大于小于号的处理方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mybatis大于小于号的处理方式”吧!在项目中查询时间段的sql语句(时间类型为varcha&...
    99+
    2023-06-02
  • Mybatis控制台打印SQL语句的两种方式实现
    问题描述 在使用mybatis进行开发的时候,由于可以动态拼接sql,这样大大方便了我们。但是也有一定的问题,当我们动态sql拼接的块很多的时候,我们要想从*mapper.xml中...
    99+
    2024-04-02
  • Mybatis注解方式完成输入参数为list的SQL语句拼接方式
    目录Mybatis注解完成输入参数为list的SQL语句拼接拼接查询条件为list集合的sql函数Mybatis注解完成输入参数为list的SQL语句拼接 首先将list集合拼接成一...
    99+
    2024-04-02
  • 批处理for语句中有哪些分隔符形式
    小编给大家分享一下批处理for语句中有哪些分隔符形式,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!其实for /l %i in (1,1,99) do @echo...
    99+
    2023-06-09
  • Mybatis-Plus中SQL语句组拼原理的的示例分析
    这篇文章主要为大家展示了“Mybatis-Plus中SQL语句组拼原理的的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis-Plus中SQL语句组拼原理的的示例分析”这篇文章...
    99+
    2023-06-15
  • mybatis-plus更新字段为null的处理方式
    目录mybatis-plus更新字段为null处理该如何设置?mybatis-plus将字段修改为null注意事项mybatis-plus更新字段为null处理 在mybatis-p...
    99+
    2024-04-02
  • 优化C语言中Go语句的使用方式
    优化C语言中Go语句的使用方式 在C语言中,要实现类似Go语言中的协程(goroutine)功能时,我们可以使用一些技巧和工具来模拟线程的并发执行。在本文中,我们将探讨如何优化C语言中...
    99+
    2024-04-02
  • Mybatis注解开发@Select执行参数和执行sql语句的方式
    执行传参 @Select 是 Mybatis 框架中的一个注解,用于执行 SQL 查询语句,并把查询结果映射到指定的 Java 对象中。 具体来说,@Select 注解会将注解中的 SQL 查询语句交给 Mybatis 框架进行解...
    99+
    2023-09-17
    mybatis sql java
  • Go语言的错误处理方式
    这篇文章主要介绍“Go语言的错误处理方式”,在日常操作中,相信很多人在Go语言的错误处理方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言的错误处理方式”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-15
  • GO框架中的自然语言处理:文件处理的新方式?
    自然语言处理(NLP)是人工智能领域中最活跃和最具挑战性的领域之一。在过去的几年中,随着大数据和深度学习技术的不断发展,NLP技术也得到了飞速的发展。在这个领域中,GO框架也逐渐成为了一个备受关注的工具。在本文中,我们将探讨GO框架中的N...
    99+
    2023-08-31
    框架 文件 自然语言处理
  • myBatis的mapper映射文件之批量处理方式
    目录mybatis批量插入mybatis批量删除mybatis批量修改myBatis mapper文件详解Mapper文件中包含的元素有mybatis支持别名:jdbcType与Ja...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作