最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis寫(xiě)xml時(shí)數(shù)字類(lèi)型千萬(wàn)別用 !=‘‘(不為空串)進(jìn)行判斷的示例詳解

 更新時(shí)間:2020年09月21日 14:50:58   作者:程馮馮  
這篇文章主要介紹了mybatis寫(xiě)xml時(shí)數(shù)字類(lèi)型千萬(wàn)別用 !=‘‘(不為空串)進(jìn)行判斷的示例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

最近項(xiàng)目?jī)?nèi)更新數(shù)據(jù)時(shí),發(fā)現(xiàn)數(shù)字類(lèi)型字段設(shè)置為0時(shí)不能正常的更新進(jìn)數(shù)據(jù)庫(kù),我們打印了下mybatis的sql日志發(fā)現(xiàn)字段為0的sql沒(méi)有被拼接。

樣例

下面的是錯(cuò)誤示例 ❌

<update id="update" parameterType="com.chengfengfeng.test.domain.People">
    update people
    set
    <if test="age!=null and age !=''">
      age=#{age},
    </if>,
    modified = sysdate()
    where user_id = #{userId}
 </update>

age是個(gè)int類(lèi)型的數(shù)據(jù),我們?cè)趯?xiě)age判斷的時(shí)候就增加上了判斷age!='',這個(gè)是存在問(wèn)題的。
正確的示例 ✅

<update id="update" parameterType="com.chengfengfeng.test.domain.People">
    update people
    set
    <if test="age!=null">
      age=#{age},
    </if>,
    modified = sysdate()
    where user_id = #{userId}
 </update>

原因是什么呢

跟蹤了下代碼,發(fā)現(xiàn)在解析xml時(shí)數(shù)字類(lèi)型會(huì)走下面的判斷

public abstract class OgnlOps implements NumericTypes {
	//省略其他無(wú)用代碼
  public static double doubleValue(Object value) throws NumberFormatException {
    if (value == null) {
      return 0.0D;
    } else {
      Class c = value.getClass();
      if (c.getSuperclass() == Number.class) {
        return ((Number)value).doubleValue();
      } else if (c == Boolean.class) {
        return (Boolean)value ? 1.0D : 0.0D;
      } else if (c == Character.class) {
        return (double)(Character)value;
      } else {
        String s = stringValue(value, true);
        //這個(gè)位置會(huì)把'‘空串處理成0
        return s.length() == 0 ? 0.0D : Double.parseDouble(s);
      }
    }
  }
}

我們看上面最后一段代碼,會(huì)把''轉(zhuǎn)換成0.0D,那么我們的最開(kāi)始的if判斷就變成了age != 0,所以當(dāng)我們把a(bǔ)ge設(shè)置為0時(shí),結(jié)果就變成了false,導(dǎo)致sql不會(huì)進(jìn)行拼接,更新數(shù)據(jù)失敗。

到此這篇關(guān)于mybatis寫(xiě)xml時(shí)數(shù)字類(lèi)型千萬(wàn)別用 !=‘‘(不為空串)進(jìn)行判斷的示例詳解的文章就介紹到這了,更多相關(guān)mybatis寫(xiě)xml數(shù)字類(lèi)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解springboot如何更新json串里面的內(nèi)容

    詳解springboot如何更新json串里面的內(nèi)容

    這篇文章主要為大家介紹了springboot 如何更新json串里面的內(nèi)容,文中有詳細(xì)的解決方案供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-10-10
  • Spring項(xiàng)目接入DeepSeek的兩種超簡(jiǎn)單的方式分享

    Spring項(xiàng)目接入DeepSeek的兩種超簡(jiǎn)單的方式分享

    DeepSeek?作為一款卓越的國(guó)產(chǎn)?AI?模型,越來(lái)越多的公司考慮在自己的應(yīng)用中集成,本文為大家?分享了Spring項(xiàng)目接入DeepSeek的兩種超簡(jiǎn)單的方式,希望對(duì)大家有所幫助
    2025-02-02
  • spring使用Filter過(guò)濾器對(duì)Response返回值進(jìn)行修改的方法

    spring使用Filter過(guò)濾器對(duì)Response返回值進(jìn)行修改的方法

    這篇文章主要介紹了spring使用Filter過(guò)濾器對(duì)Response返回值進(jìn)行修改,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java實(shí)現(xiàn)圖章或簽名插在pdf的固定位置

    Java實(shí)現(xiàn)圖章或簽名插在pdf的固定位置

    使用Java技術(shù)在word轉(zhuǎn)換成pdf過(guò)程中實(shí)現(xiàn)將圖章或者簽名插入在pdf中,并生成帶圖章或者簽名的pdf,來(lái)完成某些特定場(chǎng)景的需求,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-10-10
  • Java中Map.merge()方法使用示例詳解

    Java中Map.merge()方法使用示例詳解

    這篇文章主要介紹了Map.merge()方法使用和介紹,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • java 多線程交通信號(hào)燈模擬過(guò)程詳解

    java 多線程交通信號(hào)燈模擬過(guò)程詳解

    這篇文章主要介紹了java 多線程交通信號(hào)燈模擬過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Spring如何基于Proxy及cglib實(shí)現(xiàn)動(dòng)態(tài)代理

    Spring如何基于Proxy及cglib實(shí)現(xiàn)動(dòng)態(tài)代理

    這篇文章主要介紹了Spring如何基于Proxy及cglib實(shí)現(xiàn)動(dòng)態(tài)代理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Spring Boot 中的 @EnableDiscoveryClient 注解的原理

    Spring Boot 中的 @EnableDiscoveryClient 注解

    @EnableDiscoveryClient 注解是 Spring Boot 應(yīng)用程序注冊(cè)到服務(wù)注冊(cè)中心的關(guān)鍵注解,這篇文章主要介紹了Spring Boot 中的 @EnableDiscoveryClient 注解,需要的朋友可以參考下
    2023-07-07
  • springboot中swagger、異步/定時(shí)/郵件任務(wù)的問(wèn)題

    springboot中swagger、異步/定時(shí)/郵件任務(wù)的問(wèn)題

    這篇文章主要介紹了springboot中swagger、異步/定時(shí)/郵件任務(wù)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 10中java常見(jiàn)字符串操作實(shí)例

    10中java常見(jiàn)字符串操作實(shí)例

    給大家分享10中java常見(jiàn)字符串操作方法以及相關(guān)實(shí)例代碼,對(duì)此有需要的讀者們可以學(xué)習(xí)參考下。
    2019-07-07

最新評(píng)論

宁夏| 乌鲁木齐县| 无极县| 永昌县| 襄垣县| 常德市| 胶南市| 周宁县| 北海市| 禄劝| 全州县| 广德县| 和林格尔县| 潼关县| 五台县| 班玛县| 浮梁县| 秦安县| 泌阳县| 开阳县| 杂多县| 辛集市| 涟水县| 仁怀市| 宜阳县| 桐乡市| 襄樊市| 商河县| 逊克县| 廊坊市| 冀州市| 横山县| 两当县| 达尔| 南岸区| 星子县| 略阳县| 舟曲县| 公主岭市| 太原市| 招远市|