每日隨筆131117

1. 字符串判null與判空的順序:細節問題,在判斷條件上判null應該放在前面(短路求值~);

2. Mysql是不能再update(包括insert等中直接連接或嵌套查詢自身的):

一個簡單的例子,在一個根據order_value值降序管理界面記錄列表中上移和下移功能的實現:

使用Mybatis框架,具體語句:

<update id="swapOrder" parameterType="Map">
    	update lectures as q1 join lectures as q2 on (q1.id=#{id,jdbcType=INTEGER} and q2.id=#{nextID,jdbcType=INTEGER})
			or(q1.id=#{nextID,jdbcType=INTEGER} and q2.id=#{id,jdbcType=INTEGER})
			set q1.order_value = q2.order_value,q2.order_value=q1.order_value;
    </update>
    <select id="getNextSmallerID" parameterType="int" resultType="String">
    	select id from lectures where order_value<(select order_value from lectures where id=#{id,jdbcType=INTEGER}) limit 1
    </select>
    <select id="getNextBiggerID" parameterType="int" resultType="String">
    	select id from lectures where order_value>(select order_value from lectures where id=#{id,jdbcType=INTEGER}) limit 1
    </select>

swapOrder過程使用了連接,但這裏通過別名來實現的自身連接,參數map中包括了id和要與之交換的nextID(上移的nextID通過getNextBiggerID來獲得,下移同理)。

3. 在實際項目中一定要注意釋放資源,各種mysql的session要及時close掉,以及reader、流等,否則在壓力測試面前問題立刻就暴露了。

另外,在繼承結構中,能夠通用的部分可以考慮設爲static;

循環中使用Matcher,注意不要在循環內創建Matcher實例,而是用reset()(同String操作——StringBuilder);

發佈了40 篇原創文章 · 獲贊 10 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章