欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis中使用CASE?WHEN關(guān)鍵字報錯及解決

 更新時間:2022年12月13日 09:01:44   作者:南獨酌酒nvn  
這篇文章主要介紹了mybatis中使用CASE?WHEN關(guān)鍵字報錯及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mybatis使用CASE WHEN關(guān)鍵字報錯

問題展現(xiàn)

如下圖所示:當我直接在 mybatis 的 xml 文件中編寫 CASE WHEN 語句后,執(zhí)行到這個 SQL 的時候就會報這個錯:

解決方案

使用 MybatisPlus 中的 @SqlParser 注解就可以解決此問題

mybatis Case When導致部分數(shù)據(jù)被置空的原因

在使用mybatis框架的時候經(jīng)常會使用批量更新sql的語句,例如:

這樣似乎一句sql能將該表中的所有字段進行更新比較省事,但是如果部分字段為空,會因為這個語句導致這條數(shù)據(jù)為空的字段變?yōu)閚ull,

  • 第一條數(shù)據(jù) id = 901, name = "啊啊啊", stock = null
  • 第二條數(shù)據(jù) id = 902, name = null ,stock = 100

執(zhí)行出來的sql就會變成這樣。

update product set name = case id when 901 then '啊啊啊' when 902 then null end, stock = case id when 901 then null when 902 then 100 end
 WHERE id in ( 901 , 902 );

導致數(shù)據(jù)庫的數(shù)據(jù)置空

如何避免

在then后面加一個ifnull判斷,為空的話就讓它等于自己

解析后的sql

update product set name = case id when 901 then ifnull('啊啊啊', name) when 902 then ifnull(null, name) end, stock = case id when 901 then ifnull(null, stock) when 902 then ifnull(100, stock) end
 WHERE id in ( 901 , 902 );

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java面試崗常見問題之ArrayList和LinkedList的區(qū)別

    Java面試崗常見問題之ArrayList和LinkedList的區(qū)別

    ArrayList和LinkedList作為我們Java中最常使用的集合類,很多人在被問到他們的區(qū)別時,憋了半天僅僅冒出一句:一個是數(shù)組一個是鏈表。這樣回答簡直讓面試官吐血。為了讓兄弟們打好基礎(chǔ),我們通過實際的使用測試,好好說一下ArrayList和LinkedList的區(qū)別這道經(jīng)典的面試題
    2022-01-01
  • Spring Boot JPA訪問Mysql示例

    Spring Boot JPA訪問Mysql示例

    本篇文章主要介紹了Spring Boot JPA訪問Mysql示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Java實現(xiàn)兩人五子棋游戲(七) 屏幕提示信息

    Java實現(xiàn)兩人五子棋游戲(七) 屏幕提示信息

    這篇文章主要為大家詳細介紹了Java實現(xiàn)兩人五子棋游戲,屏幕提示游戲信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • spring依賴注入成功但在調(diào)用接口的時候拿到的依賴卻是null問題

    spring依賴注入成功但在調(diào)用接口的時候拿到的依賴卻是null問題

    這篇文章主要介紹了spring依賴注入成功但在調(diào)用接口的時候拿到的依賴卻是null問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • JAVA8之函數(shù)式編程Function接口用法

    JAVA8之函數(shù)式編程Function接口用法

    這篇文章主要介紹了JAVA8之函數(shù)式編程Function接口用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Java集合之整體結(jié)構(gòu)

    Java集合之整體結(jié)構(gòu)

    Java中集合類是Java編程中使用最頻繁、最方便的類。接下來通過本文給大家介紹Java集合之整體結(jié)構(gòu),一起看看吧
    2016-05-05
  • SpringBoot整合Mybatis-plus案例及用法實例

    SpringBoot整合Mybatis-plus案例及用法實例

    mybatis-plus是一個 Mybatis 的增強工具,在 Mybatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關(guān)于SpringBoot整合Mybatis-plus案例及用法實例的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Spring注解方式防止重復提交原理詳解

    Spring注解方式防止重復提交原理詳解

    這篇文章主要為大家詳細介紹了Spring注解方式防止重復提交原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Spring?boot?處理大文件上傳完整代碼

    Spring?boot?處理大文件上傳完整代碼

    這篇文章主要介紹了Spring?boot?處理大文件上傳,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Java基礎(chǔ)之Comparable與Comparator概述

    Java基礎(chǔ)之Comparable與Comparator概述

    這篇文章主要介紹了Java基礎(chǔ)之Comparable與Comparator詳解,文中有非常詳細的代碼示例,對正在學習java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04

最新評論