最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis的動(dòng)態(tài)SQL以及連接池詳解

 更新時(shí)間:2022年02月08日 16:54:36   作者:ychen_sparkle  
這篇文章主要介紹了mybatis的動(dòng)態(tài)SQL以及連接池詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis動(dòng)態(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>

同時(shí),第一個(gè)if語句中的and將會(huì)被省略?。?!

mybatis中的范圍查詢,in

mybatis范圍查詢,例如select * from users where age in (11,12,13);

外部定義一個(gè)包裝類,包裝ages作為屬性,下列以id為例子(在外部定義集合來包裝)

<select id="findByRange" parameterType="com.domain.QueryVo" resultType="com.domain.User">
? ? ? ? select * from users
? ? ? ? <where>
//where子句的開頭,and或者是or,將會(huì)被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代表遍歷集合的每個(gè)元素,生成的變量名
  • sperator代表元素之間的分割符

連接池

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

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

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

  • type取值 POOLED采用傳統(tǒng)的javax.sql.DataSource規(guī)范中的連接池      
  • UNPOLLED 雖然實(shí)現(xiàn)了DataSource的標(biāo)準(zhǔn),但是沒有使用池的概念(Connection對(duì)象)
  • JNDI 使用服務(wù)器提供的jndi技術(shù)來取得DataSource對(duì)象。注意:如果不是web工程和maven的war工程,是不可使用的。

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

  • POOLED:從池中拿出連接,最后把連接放回池里。
  • UNPOOLED 創(chuàng)建連接,結(jié)束連接(jdbc連接方式)

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

動(dòng)態(tài)sql

① where和if標(biāo)簽

在這里插入圖片描述

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

在這里插入圖片描述

注意事項(xiàng)

在這里插入圖片描述

③ 批量添加

在這里插入圖片描述

④ selectKey

在這里插入圖片描述

多表的連接查詢

① 多對(duì)一查詢

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

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

C). 連接查詢的sql語句

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

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

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

在這里插入圖片描述

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

在這里插入圖片描述

③ 一對(duì)多查詢

與多對(duì)一查詢不同的地方:

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

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

在這里插入圖片描述

小結(jié)

一對(duì)多的查詢用的相對(duì)少一些。在查詢一的一端的同時(shí)查詢展示外鍵與一的 一端的主鍵相同的數(shù)據(jù)。

例:查詢部門表同時(shí)查詢展示所有屬于該部門的員工。

多對(duì)以的查詢用的相對(duì)多一些。在查詢多的一端的同時(shí)查詢展示主鍵與多的一端的外鍵相同的數(shù)據(jù)。例:查詢員工表同時(shí)查詢展示該員工所屬的部門信息。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

尼玛县| 拜泉县| 隆化县| 太和县| 肥城市| 新干县| 丽水市| 呼和浩特市| 大洼县| 四平市| 疏附县| 萨迦县| 湘乡市| 鸡西市| 时尚| 仪陇县| 舞钢市| 永康市| 阜康市| 荆门市| 互助| 什邡市| 灌南县| 贡嘎县| 广德县| 察隅县| 齐齐哈尔市| 莱芜市| 米脂县| 泰宁县| 资中县| 栾城县| 乐平市| 铜梁县| 广宗县| 丽水市| 高要市| 左贡县| 张家川| 白山市| 安庆市|