栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

源码解析之 Mybatis 对 Integer 参数做了什么手脚?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

源码解析之 Mybatis 对 Integer 参数做了什么手脚?


title: 源码解析之 Mybatis 对 Integer 参数做了什么手脚?
date: 2021-03-11
updated: 2021-03-11
categories:

  • Mybatis
  • 源码解析
    tags:
  • Mybatis
  • 源码解析

解决方案放在第二节,急需解决问题,可直接查看解决方案。

本文为深度长文,请耐心阅读!



问题描述

在 Mybatis 中,Integer 的入参为 0 时,发现判断条件的非空判断没有生效,原本应该存在的判断条件丢失了。

那么,Mybatis 到底对 Integer 参数做了什么手脚呢?下面我们来举例说明:

环境示例

该问题只与 Mybatis 的实现机制有关,与版本基本无关(如果说相关性,可能只与源码中实现代码所在的行数有关)。

不过,为了养成良好的习惯,还是稍微提一下,我使用的 Mybatis 版本是 3.5.2。

接口示例

@GetMapping("/queryByAgeGroup")
public HttpStatus queryByAgeGroup(@RequestParams("ageGroup") Integer ageGroup) {

  // ageGroup 年龄段:0 代表幼儿,1 代表青年,2 代表中年,3 代表老年,-1 代表未知
  IndexTestService.queryByAgeGroup(ageGroup);
  return HttpStatus.HTTP_OK;
}

测试用例属于参数透传,没有业务逻辑,故省略 Service 和 Dao 层。

查询 SQL 示例