mybatis的動態SQL以及連接池

mybatis根據傳入參數的不同來查詢。
<select id="findByCondition" parameterType="com.domain.User" resultType="com.domain.User">
        select * from users where 1=1
        <if test="name != null">
           and name= #{name}
        </if>
    </select>
如果太多的話,就不寫where1=1.在if外面嵌套if標籤。
<select id="findByCondition" parameterType="com.domain.User" resultType="com.domain.User">
        select * from users
        <where>
            <if test="name != null">
                and name= #{name}
            </if>
        </where>

    </select>

同時,第一個if語句中的and將會被省略!!!

mybatis中的範圍查詢,in

mybatis範圍查詢,例如select * from users where age in (11,12,13);
外部定義一個包裝類,包裝ages作爲屬性,下列以id爲例子(在外部定義集合來包裝)
<select id="findByRange" parameterType="com.domain.QueryVo" resultType="com.domain.User">
        select * from users
        <where>
//where子句的開頭,and或者是or,將會被where元素去除。
            <if test="ids != null and ids.size()>0">這裏的判斷條件是Java語句
                <foreach collection="ids" open="and id in (" close=")" item="id" separator=",">
                    #{id}
                </foreach>
            </if>
        </where>
    </select>
SQL語句 select 字段 from where id in{?}
<foreach>標籤用於遍歷集合,它的屬性;
Collection 代表要遍歷的集合元素(屬性名稱)
open代表語句的開始部分
close代表語句的結束部分
item代表遍歷集合的每個元素,生成的變量名
sperator代表元素之間的分割符

連接池:

連接池:在實際開發中使用,可以減少我們獲取連接所消耗的時間。

mybatis連接池提供了3種方式的配置
在主配置文件中的DataSource屬性中配置
type取值 POOLED採用傳統的javax.sql.DataSource規範中的連接池      
UNPOLLED   雖然實現了DataSource的標準,但是沒有使用池的概念(Connection對象)
JNDI 使用服務器提供的jndi技術來取得DataSource對象。注意:如果不是web工程和maven的war工程,是不可使用的。

備註:mybatis中事務的操控,底層是通過操控Connection對象設置的。

POOLED:從池中拿出連接,最後把連接放回池裏。
UNPOOLED,創建連接,結束連接(jdbc連接方式)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章