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

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

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

前言

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

樣例

下面的是錯(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類型的數(shù)據(jù),我們?cè)趯慳ge判斷的時(shí)候就增加上了判斷age!='',這個(gè)是存在問題的。
正確的示例 ✅

<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ù)字類型會(huì)走下面的判斷

public abstract class OgnlOps implements NumericTypes {
	//省略其他無用代碼
  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,那么我們的最開始的if判斷就變成了age != 0,所以當(dāng)我們把a(bǔ)ge設(shè)置為0時(shí),結(jié)果就變成了false,導(dǎo)致sql不會(huì)進(jìn)行拼接,更新數(shù)據(jù)失敗。

到此這篇關(guān)于mybatis寫xml時(shí)數(shù)字類型千萬別用 !=‘‘(不為空串)進(jìn)行判斷的示例詳解的文章就介紹到這了,更多相關(guān)mybatis寫xml數(shù)字類型內(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的兩種超簡單的方式分享

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

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

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

    這篇文章主要介紹了spring使用Filter過濾器對(duì)Response返回值進(jìn)行修改,本文通過實(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過程中實(shí)現(xiàn)將圖章或者簽名插入在pdf中,并生成帶圖章或者簽名的pdf,來完成某些特定場景的需求,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-10-10
  • Java中Map.merge()方法使用示例詳解

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

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

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

    這篇文章主要介紹了java 多線程交通信號(hào)燈模擬過程詳解,文中通過示例代碼介紹的非常詳細(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)代理,文中通過示例代碼介紹的非常詳細(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ù)的問題

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

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

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

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

最新評(píng)論

秦皇岛市| 涡阳县| 古交市| 平远县| 武清区| 祁门县| 利津县| 阜南县| 平定县| 黔西县| 浪卡子县| 德清县| 汾西县| 梅河口市| 义乌市| 藁城市| 山东省| 河西区| 潜江市| 靖宇县| 哈巴河县| 怀化市| 蒙自县| 延吉市| 平乐县| 将乐县| 昭苏县| 灌南县| 兴安县| 孟村| 长治市| 桐乡市| 黄梅县| 马龙县| 牟定县| 福泉市| 麻栗坡县| 岑溪市| 安溪县| 阿克苏市| 浮山县|