spring中case一直返回else中的值-问题和原理详解

目录

案例背景

问题现象

问题根源

解决过程

最终结论

经验总结


案例背景

在基于 Spring Boot + MyBatis 的项目中,需要通过 SQL 的 CASE WHEN 语句生成 user_Name字段(表示是否有关联用户名称,1 为有关联,0 为无关联),并映射到实体类 UserNameVo 的 user_Name字段。但前端始终显示该字段为 null,尽管 SQL 中 CASE WHEN 1=1 THEN 1 ELSE 0 END 理论上应返回 1。但是也显示是0,或者是null。

问题现象

  • SQL 中明确通过 CASE WHEN 生成 user_Name字段,且直接执行 SQL 时结果为 1
  • 实体类 user_NameVo 中 user_Name字段类型从 long 改为 Integer 后,前端仍显示为 null
  • 关联字段 nameid 能正常返回值,说明 SQL 关联逻辑无问题。

问题根源

MyBatis 配置了 map-underscore-to-camel-case: true(下划线转驼峰命名),导致:

  • SQL 别名 user_Name(含下划线)被自动转为驼峰 userName。
  • 实体类字段为 user_Name(含下划线),与转换后的驼峰名 userName不匹配,从而映射失败,字段值为 null

解决过程

  1. 排查方向:从 SQL 逻辑、实体类类型、MyBatis 结果映射等方面逐一排查,最终聚焦到字段命名匹配问题。
  2. 解决方案
    • 方案一(关闭下划线转驼峰):在 application.yml 中设置 mybatis.configuration.map-underscore-to-camel-case: false,让 MyBatis 严格按字段名(含下划线)完全匹配映射。
    • 方案二(统一驼峰命名):将实体类字段改为 userName,同时 SQL 别名改为 userName,保持下划线转驼峰配置开启,符合项目驼峰命名规范。

最终结论

MyBatis 的 “下划线转驼峰” 配置导致 SQL 别名与实体类字段名匹配失败,调整配置或统一字段命名规范后,userName字段能正确接收 1,问题解决。

经验总结

在 MyBatis 项目中,若遇到字段映射为 null 但 SQL 逻辑正确的情况,需优先检查:

  • 字段名匹配:SQL 别名与实体类字段名(含大小写、下划线 / 驼峰)是否完全一致。
  • MyBatis 配置map-underscore-to-camel-case 等影响字段映射规则的配置是否与字段命名规范冲突。
  • 类型兼容性:实体类字段类型与 SQL 返回值类型(如 int 与 Integerlong 等)是否兼容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/99056.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/99056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache IoTDB V1.3.5 发布|优化加密算法,优化内核稳定性,修复社区反馈问题

Release AnnouncementVersion 1.3.5 Apache IoTDB V1.3.5 已经发布!V1.3.5 作为之前 1.3.x 的 bugfix 版本升级,主要调整用户密码加密算法,进一步强化数据访问安全,同时优化内核稳定性,修复社区反馈问题。欢迎点击阅读…

开源好用的博客系统简介和详细安装教程

目录 看效果 ① 搜索一键安装包 ② 填写安装信息 ③ 使用界面安装向导 ④ 安装完成 使用普通模式安装 看效果 下面直接来安装教程 ① 搜索一键安装包 登录宝塔后台系统,进入软件商店 → 一键部署,搜索 “ModStart”。 ② 填写安装信息 点击“一键…

医院高值耗材智能化管理路径分析(下)

医保协同:政策适配与编码联动的精准付费 国家医保局"带码采购、带码使用、带码结算"政策推动下,AI系统通过编码映射与实时规则引擎实现医保支付的动态适配。国医科技构建的UDI编码、医保编码与收费编码三码联动体系,可在耗材使用时自动匹配国家医保医用耗材分类与…

硬件开发2-ARM裸机开发1-I.MX6ULL - 汇编点灯

一、概念概要1、LED原理图2、内核中对应的引脚 — GPIO(1)概念GPIO(通用输入/输出)详解GPlO(General-PurposeInput/Output)是嵌入式系统和微控制器中最基本的外设接口,用于 实现数字信号的输入和…

Qwen3-80B-A3B混合注意力机制

一、注意力机制背景: 在Transformer架构中,自注意力(Self-Attention)是核心组件。其基本公式为: 其中: Q (Query):查询向量,表示问询量。用于与其他位置的Key交互&#xff0…

数据库(一)数据库基础及MySql 5.7+的编译安装

文章目录前言一、数据库概述1.1 前置知识1.1.1 LAMP / LNMP 架构1.1.2 数据库的定位1.2 数据库基本概念1.2.1 数据1.2.2 表1.2.3 数据库1.2.4 数据库管理系统(DBMS)1.2.5 数据库系统(DBS)1.3 数据库发展史1.3.1 第一阶段&#xff…

Elasticsearch HTTPS访问错误解决指南

文章目录🔍 原因分析✅ 正确的访问方式:使用 curl -k https://...🔐 你需要知道 elastic 用户的密码方法 1:查看首次生成的密码(如果刚安装)方法 2:重置密码✅ 成功示例🎉 总结&…

Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节

对于神经网络来说,我们已经习惯了层状网络的思维:数据进来,经过第一层,然后第二层,第三层,最后输出结果。这个过程很像流水线,每一步都是离散的。 但是现实世界的变化是连续的,比如…

Elasticsearch面试精讲 Day 16:索引性能优化策略

【Elasticsearch面试精讲 Day 16】索引性能优化策略 在“Elasticsearch面试精讲”系列的第16天,我们将深入探讨索引性能优化策略。这是Elasticsearch高频面试考点之一,尤其在涉及高并发写入、海量日志处理或实时数据分析场景时,面试官常通过…

ESP32-C3 入门09:基于 ESP-IDF + LVGL + ST7789 的 1.54寸 WiFi 时钟(SquareLine Studio 移植)

一. https://github.com/nopnop2002/esp-idf-st7789 1. 前言 2. 开发环境准备 2.1 硬件清单 ESP32-C3 开发板ST7789 1.54 寸 LCD其他辅助元件(杜邦线、电源) 2.2 软件安装 ESP-IDF 环境安装(WindowsVScode)VSCode 插件配置LV…

PINN物理信息神经网络驱动的三维声波波动方程求解MATLAB代码

MATLAB 代码实现了一个基于物理信息神经网络(Physics-Informed Neural Network, PINN)的三维波动方程求解器。以下是详细分析:🧠 一、主要功能🔗 二、逻辑关联 代码结构清晰,分为五个主要部分: …

leetcode33(最小栈)

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin(…

TDesign学习:(二)i18n配置与使用

配置 src/locales/lang/en_US/pages 目录下对应的各个模块语言的对象

k8s 内置的containerd配置阿里云个人镜像地址及认证

原因:阿里云仓库必须使用凭证登录,不然无法进行镜像拉取!1.生成自己的凭证信息# 格式:阿里云仓库用户名:凭证密码 echo -n myuser:mypass | base64 #生成的加密凭证 bXl1c2VyOm15cGFzcw2.修改containerd的镜像仓库配置vi /etc/co…

Python实战:HTTP接口数据获取与PostgreSQL存储系统

项目背景 项目结构 关键技术点 1. 灵活的HTTP请求处理 2. 自动表结构生成与字段类型推断 3. 健壮的数据库操作与错误处理 4. 配置驱动的设计理念 功能实现 1. 数据获取流程 2. 命令行参数支持 2. 数据处理与字段排除 项目扩展与优化方向 结语 项目背景 在日常开发和数据分析工…

递归,搜索与回溯算法

递归→搜索→回溯 名词解释 递归 1.什么是递归 形象地说就是函数自己调用自己。 例子: 二叉树的遍历-后序遍历 void dfs(treenode* root) {//细节 - 出口if(root NULL) return;dfs(root->left);dfs(root->right);printf(root->val); }快排 void quickSort…

【OpenAPI】OpenAPI 3.0x 格式解析技术指南

OpenAPI 格式解析技术指南 概述 OpenAPI(原名 Swagger)是一种用于描述 REST API 的规范格式,它提供了标准化的方式来定义 API 的结构、参数、响应等信息。本文将深入探讨如何解析 OpenAPI 文档,并基于实际项目中的 openapi-pars…

【亲测有效】解决 “Batch script contains DOS line breaks (\r\n)” 报错

【亲测有效】解决 “Batch script contains DOS line breaks (\r\n)” 报错 适用场景:在 Linux/Slurm 集群上 sbatch 提交脚本或运行 Shell 脚本时遇到 “DOS line breaks (\r\n) instead of UNIX line breaks (\n)” 的报错。 文章目录【亲测有效】解决 “Batch sc…

动态 SQL 标签对比表

动态 SQL 标签对比表标签用途关键属性默认行为<if>条件判断test条件成立则拼接<where>处理 WHERE无去除 AND/OR 开头&#xff0c;加 WHERE<set>处理 SET无去除末尾逗号&#xff0c;加 SET<foreach>遍历集合collection, item, separator无默认&#xff…

征程 6 灰度图部署链路介绍

一、为什么是灰度图 相较于 RGB 三通道图像&#xff0c;灰度图仅保留亮度信息&#xff08;Y 分量&#xff09;&#xff0c;数据量减少 2/3&#xff0c;相比于常用的 NV12 图像&#xff0c;数据量减少 1/3&#xff0c;内存占用与计算负载显著降低。对于下游网络结构而言&#xf…