每日随笔131117

来源:互联网 发布:js获取 鼠标位置 编辑:程序博客网 时间:2024/06/06 03:27

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);