一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - mybatis寫xml時數字類型千萬別用 !=‘‘(不為空串)進行判斷的示例詳解

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

2020-09-22 00:21程馮馮 Java教程

這篇文章主要介紹了mybatis寫xml時數字類型千萬別用 !=‘‘(不為空串)進行判斷的示例詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

最近項目內更新數據時,發現數字類型字段設置為0時不能正常的更新進數據庫,我們打印了下mybatis的sql日志發現字段為0的sql沒有被拼接。

樣例

下面的是錯誤示例 ?

?
1
2
3
4
5
6
7
8
9
<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是個int類型的數據,我們在寫age判斷的時候就增加上了判斷age!='',這個是存在問題的。
正確的示例 ?

?
1
2
3
4
5
6
7
8
9
<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>

原因是什么呢

跟蹤了下代碼,發現在解析xml時數字類型會走下面的判斷

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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);
        //這個位置會把'‘空串處理成0
        return s.length() == 0 ? 0.0D : Double.parseDouble(s);
      }
    }
  }
}

我們看上面最后一段代碼,會把''轉換成0.0D,那么我們的最開始的if判斷就變成了age != 0,所以當我們把age設置為0時,結果就變成了false,導致sql不會進行拼接,更新數據失敗。

到此這篇關于mybatis寫xml時數字類型千萬別用 !=‘‘(不為空串)進行判斷的示例詳解的文章就介紹到這了,更多相關mybatis寫xml數字類型內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq_30062181/article/details/108707733

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产91一区二区在线播放不卡 | 无码精品一区二区三区免费视频 | 久久99re热在线播放7 | 天堂69亚洲精品中文字幕 | 66j8影院xxxx深夜 | 国产第2页 | 国产欧美精品专区一区二区 | 午夜欧美福利视频 | 欧美专区亚洲 | 色综合中文字幕天天在线 | tolove第一季动画在线看 | 色cccwww| 日本美女视频韩国视频网站免费 | 明星ai人脸替换脸忘忧草 | 国产一区二区免费在线 | 韩国三级hd中文字幕李采潭 | www.爱情岛论坛 | 26uuu久久| 2019国内自拍大神视频 | 免费国产成人 | 久久精品美女 | 羞羞答答免费人成黄页在线观看国产 | 国产成人免费在线视频 | 青青青久久久 | 大叔在线观看 | 日本bbwbbw | 洗濯屋H纯肉动漫在线观看 武侠艳妇屈辱的张开双腿 午夜在线观看免费观看 视频 | 亚洲欧美在线免费观看 | 日本免费全黄一级裸片视频 | 亚洲经典激情春色另类 | 毛片亚洲毛片亚洲毛片 | 毛片视频网站在线观看 | 亚洲成人国产精品 | 亚洲国内精品 | dyav午夜片 | 欧亚精品一区二区三区 | chinese456老年gay| 成人影院在线观看 | 91国语精品自产拍在线观看一 | 国产精品一区二区久久 | 第一次不是你高清在线观看 |