溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mybatis的動態(tài)SQL及連接池怎么配置

發(fā)布時間:2022-02-09 09:09:07 來源:億速云 閱讀:162 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下mybatis的動態(tài)SQL及連接池怎么配置的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

mybatis動態(tài)SQL及連接池

mybatis根據(jù)傳入?yún)?shù)的不同來查詢。

<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標(biāo)簽。

<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>標(biāo)簽用于遍歷集合,它的屬性;

  • Collection 代表要遍歷的集合元素(屬性名稱)

  • open代表語句的開始部分

  • close代表語句的結(jié)束部分

  • item代表遍歷集合的每個元素,生成的變量名

  • sperator代表元素之間的分割符

連接池

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

mybatis連接池提供了3種方式的配置

在主配置文件中的DataSource屬性中配置

  • type取值 POOLED采用傳統(tǒng)的javax.sql.DataSource規(guī)范中的連接池      

  • UNPOLLED 雖然實現(xiàn)了DataSource的標(biāo)準(zhǔn),但是沒有使用池的概念(Connection對象)

  • JNDI 使用服務(wù)器提供的jndi技術(shù)來取得DataSource對象。注意:如果不是web工程和maven的war工程,是不可使用的。

備注:mybatis中事務(wù)的操控,底層是通過操控Connection對象設(shè)置的。

  • POOLED:從池中拿出連接,最后把連接放回池里。

  • UNPOOLED 創(chuàng)建連接,結(jié)束連接(jdbc連接方式)

動態(tài)sql與多表的連接查詢

動態(tài)sql

① where和if標(biāo)簽

mybatis的動態(tài)SQL及連接池怎么配置

② foreach循環(huán)標(biāo)簽

mybatis的動態(tài)SQL及連接池怎么配置

注意事項

mybatis的動態(tài)SQL及連接池怎么配置

③ 批量添加

mybatis的動態(tài)SQL及連接池怎么配置

④ selectKey

mybatis的動態(tài)SQL及連接池怎么配置

多表的連接查詢

① 多對一查詢

A). 建表時,外鍵一定是建在多的一端。

B). 在多的一端的實體類中創(chuàng)建一個一的一端的對象屬性。

C). 連接查詢的sql語句

  • ①select &hellip; from 表1 left join 表2 on 連接條件。連接條件一般就是外鍵=指向的主鍵。

  • ② resultMap

i. id,result配置一般的屬性

ii. association標(biāo)簽配置多余的字段,property和javatype屬性。子標(biāo)簽id和result

mybatis的動態(tài)SQL及連接池怎么配置

② 多對一查詢?nèi)绾巫龅叫薷墓δ?/strong>

mybatis的動態(tài)SQL及連接池怎么配置

③ 一對多查詢

與多對一查詢不同的地方:

A)創(chuàng)建實體類時,在一的一端創(chuàng)建一個List屬性,List中放的是多的一端的對象。

B)詳細(xì)的resultMap配置

mybatis的動態(tài)SQL及連接池怎么配置

以上就是“mybatis的動態(tài)SQL及連接池怎么配置”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI