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
英文地址,請注明出處:http://en.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…