mybatis查询参数字段为数字0被判为空字符串

508 阅读1分钟

xml的查询语句使用!=null and !=''判空,结果把传入的参数数字0被判断为空字符串

处理方法:

  1. 改变查询语句,只使用!= null,不使用!=''。查询的实体定义查询字段类型为Integer,前端传入空字符串的情况下Integer不会接受而是为null
  2. 查询语句保持不变,改变查询参数类型为String

问题记录:

数据库表字段:

`new_sap_mark` int(0) NULL DEFAULT 1 COMMENT '新SAP标识:1-是;0否'

xml查询判断语句(部分):

<if test="query.newSapMark != null and query.newSapMark != ''">
    AND tcm.new_sap_mark = #{query.newSapMark}
</if>

查询实体:

/**
 * 新SAP标识
*/
@ApiModelProperty(value = "新SAP标识")
private Integer newSapMark;

日志打印:

QQ截图20220615085432.jpg

QQ截图20220615085506.jpg

在传入参数类型为Integer的前提下,第一张传入的参数为0,打印的查询语句中并没有拼接上tcm.new_sap_mark =0,第二张传入的参数为1,打印的查询语句中拼接上了tcm.new_sap_mark = 1。 

QQ截图20220615090349.jpg

将传入参数类型修改为String,不改变查询语句判断,第一张传入的参数为0,打印的查询语句中拼接上了tcm.new_sap_mark =0。

遗留问题:

目前这个情况在本地开发没有,测试环境有,暂时没头绪排除出是为什么,有知道的大佬麻烦评论告知一下。

若有不足,欢迎指正