歡迎光臨
每天分享高質量文章

Java Web技術經驗總結(七)

1. apache-commons-collections升級

apache-commons專案群的地址在:link。最近開發時發現,原來的apache-commons-colllections依賴庫不能用了,然後去官網查了下,發現近期apache-commons-collections進行了遷移。如下所示:

2. MyBatis中,#和$符號的區別?

SQL的引數讀取要用#,表示佔位符;給出如下SQL陳述句:

  1.    SELECT

  2.      DISTINCT a.number, a.outgoing_count, b.name, b.icon

  3.    FROM

  4.         a_detail a outer join b_detail b

  5.    WHERE

  6.      calllog.kp=#{kp}   AND  contact.kp=#{kp}     AND      contact.number=calllog.number

  7.   LIMIT #{start}, #{pageSize}

如果我在獲取kp引數的時候使用#符號,則執行過程中,引數會以佔位符的形式出現,並按照引數的型別賦值。當表中該引數有索引的時候,只有型別對才能用到索引。例如,這裡的kp在表中有索引,那麼只有用#{}傳入引數才可用到索引。如果用$符號,則MyBatis會做明文替換,傳遞給MySQL的SQL陳述句也沒有指定正確的資料型別,就用不到kp的索引。

3. 在HashMap中,如何使用可變物件作為key?

參考:Java 用自定義型別作為HashMap的鍵

4. 在JavaWeb開發中,你需要掌握的MySQL知識,可以參考:MySQL總結這篇文章。

5. insertOrUpdate陳述句,透過Insert…values() on duplicate key update ….陳述句實現,這裡有兩點需要註意:

  • 影響行數:insert 1、update 2、和當前row的值完全相同則為0;

  • select LASTINSERTID() 傳回值:在insert … on duplicate key update…陳述句中,insert傳回剛剛插入的記錄的ID;update 無意義。

6. 透過正則運算式匹配正確的IP4地址,參考link正則運算式如下:

  1. ^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

7. 在Spring MVC專案中,可能需要新增業務監控日誌

我們這裡用到Spring AOP功能。在Controller中新增AOP,可能會出現攔截方法不生效的情況,這種情況可以參考SpringAOP攔截Controller,Service實現日誌管理(自定義註解的方式);另外,也可以利用filter、mvc interceptor或者method intercetpor實現,對於需要統計方法的執行時間,使用method interceptor最合適,參考使用方法攔截器MethodInterceptor和AOP統一處理log。

8. 開發過程中的程式碼質量規範

利用google check style規範,在intelij idea中也有對應的check-style外掛可供使用。

9. 在開發的過程中,有時會對某個專案的程式碼行數感興趣

對於git管理的程式碼庫,可以使用如下命令統計:

  1. git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'

贊(0)

分享創造快樂