mybatis if传入字符串数字踩坑记录及解决
作者:搬运Gong 发布时间:2022-07-18 00:41:18
标签:mybatis,if,字符串,数字
mybatis if传入字符串数字踩坑
前台页面内容,注意这里的类型为字符串类型的数字
<li>
<label>支付类型:</label>
<form:select path="payType" class="input-medium">
<form:option value="">全部</form:option>
<form:option value="1">线上支付</form:option>
<form:option value="3">线下支付</form:option>
</form:select>
</li>
后台 MVC 接收参数:
Class RefundLog {
....
/**
* 支付类型 1:线上支付服务,3:线下支付服务
*/
private String payType;
.....
}
public String refundOrderList(RefundLog refundLog, HttpServletRequest request, HttpServletResponse response, Model model) {
.....
}
此时 mybatis 中使用常规的字符串判断,不会进入条件,如下,错误的写法:
<if test="payType == '1'">
AND rl.pay_type in ('1','ZFBA','WEIX')
</if>
经过调试发现,SQL 未进入判断!!!
正确的写法如下
将字符串数字toString 一下!!!!
<if test="payType == '1'.toString()">
AND rl.pay_type in ('1','ZFBA','WEIX')
</if>
搞定!!
mybatis if比较字符串相等问题
在mybatis中,使用<if test="flag=='1'">
flag为string类型传入,其值也是“1”,但是这个等式的返回结果是false
最后发现mybatis将'1'解析为char类型,所有不相等
可将<if test="flag=='1'">改为<if test='flag=="1"'>或者<if test="flag==1">
这个误区在使用mybatis好多年都没有发现,所以尽量不要使用单字符的String字符串来进行比较
mybatis是用OGNL表达式来解析的,在OGNL的表达式中,单引号里单个字符会被解析成char类型(多个字符是可以的),java是强类型的,char 和一个string 会导致不等
来源:https://blog.csdn.net/qq_20315217/article/details/120936496
0
投稿
猜你喜欢
- 博主在初学注解的时候看到网上的介绍大部分都是直接介绍用法或者功能,没有实际的应用场景,篇幅又很长导致学习的时候难以理解其意图,而且学完就忘Q
- 1、检测权限因为dump系统lsass内存和sam注册表需要管理员权限,所以首先需要对当前进程上下文权限做判断。public static
- 每一个基于java的应用程序都有一个共同工作来展示给用户看到的内容作为工作的应用几个对象。当编写一个复杂的Java应用程序,应用程序类应该尽
- Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,
- 问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值。首先定义链表结点public class ListNode { &nbs
- 1、继承Threadpublic class T4 {public static void main(String[] args) {Sys
- Java为TCP协议提供了两个类,分别在客户端编程和服务器端编程中使用它们。在应用程序开始通信之前,需要先创建一个连接,由客户端程序发起;而
- ThymeleafThymeleaf是最近SpringBoot推荐支持的模板框架,官网在thymeleaf.org这里。我们为什么要用Thy
- 前言项目流程图如下:这里我们通过:163邮箱来实现激活码发送qq邮箱来进行接收学习之前需要掌握的知识springboot的基本使用方法mys
- 本文实例讲述了Java矩阵连乘问题(动态规划)算法。分享给大家供大家参考,具体如下:问题描述:给定n个矩阵:A1,A2,...,An,其中A
- 作为一个初级GIS程序员,关于封装那些宏观的概念暂且不提,编程经常面对的就是“字段,属性,方法”,这也是面向对象的基本概念之一。1.字段通常
- Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理效果远比Java API的好。从API提供现有的图像文件
- 目录一、图示二、链表的概念及结构三、单链表的实现四、完整代码的展示一、图示二、链表的概念及结构 链表是一种物理存储结构上非连续存储结构,数据
- 一、什么是封装?封装就是将属性私有化,提供公有的方法访问私有属性。做法就是:修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值(g
- 一、字符流的出现中文在GBK中占有两个字节,在utf-8中占有三个字节(即需要三个字节才能组成一个中文字),字节流读取中文时由于编码集的不同
- 使用INI配置文件,简单便捷。该辅助工具类为C#操作INI文件的辅助类,源码在某位师傅的基础上完善的来,因为忘记最初的来源了,因此不能提及引
- tomcat中文乱码问题这几天测试的兄弟发现了项目中存在乱码问题 经过排查发现是tomcat中的问题 于是在server.xml中添加了如下
- Java goto语句妙用今天和朋友聊天的时候,无意间聊到了 goto 语句,但是在 Java 中, goto 是保留关键字,但是朋友说 J
- SpringBoot 整合 Redis 数据库实现数据缓存的本质是整合 Redis 数据库,通过对需要“缓存&r
- 本文实例讲述了Java实现的求解经典罗马数字和阿拉伯数字相互转换问题。分享给大家供大家参考,具体如下:古罗马帝国开创了辉煌的人类文明,但他们