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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 人妖欧美一区二区三区四区 | 羞羞视频免费观看网站 | 国产午夜精品福利 | 亚洲人成在线观看一区二区 | 亚洲激情在线 | 果冻传媒在线播放观看w | 午夜久久久久久网站 | 97伊人久久精品亚洲午夜 | 日本最大的黄色网站 | www.久久99| 国产精品女主播自在线拍 | 摸逼网| 日韩操比视频 | 精品一成人岛国片在线观看 | 日韩亚洲欧美综合一区二区三区 | 黑人巨大videosjapan高清 黑人好大 | 亚洲品质水蜜桃 | 高清国产精品久久 | 国产精品国产三级国产专区不 | 啊用力好大粗黑人小说 | 欧美高清国产 | 欧美精品国产一区二区 | 91sao在线看片水片 | 日韩日b视频 | 青青国产成人久久91网 | 日本一区二区三区精品 | 亚洲AV蜜桃永久无码精品无码网 | 午夜久久影院 | 久久99re2在线视频精品 | 欧美交换乱理伦片120秒 | 欧美黄站 | 手机看片国产免费现在观看 | 拔插拔插.com | 翁息肉小说老扒 | 久久re热在线视频精69 | 国产亚洲福利一区二区免费看 | 欧美折磨另类系列sm | 高清在线看 | 91精品国产一区 | 久久免费看少妇高潮A片JA | 日本在线观看免费高清 |