亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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標簽。

<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將會被省略!?。?/p>

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代表語句的結(jié)束部分
  • item代表遍歷集合的每個元素,生成的變量名
  • sperator代表元素之間的分割符

連接池

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

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

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

  • type取值 POOLED采用傳統(tǒng)的javax.sql.DataSource規(guī)范中的連接池      
  • UNPOLLED 雖然實現(xiàn)了DataSource的標準,但是沒有使用池的概念(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標簽

在這里插入圖片描述

② foreach循環(huán)標簽

在這里插入圖片描述

注意事項

在這里插入圖片描述

③ 批量添加

在這里插入圖片描述

④ selectKey

在這里插入圖片描述

多表的連接查詢

① 多對一查詢

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

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

C). 連接查詢的sql語句

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

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

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

在這里插入圖片描述

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

在這里插入圖片描述

③ 一對多查詢

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

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

B)詳細的resultMap配置

在這里插入圖片描述

小結(jié)

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

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

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

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

相關(guān)文章

  • 利用maven deploy上傳本地jar至私服的方法

    利用maven deploy上傳本地jar至私服的方法

    這篇文章主要介紹了利用maven deploy上傳本地jar至私服的方法,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Java多線程執(zhí)行處理業(yè)務(wù)時間太久解決方法代碼示例

    Java多線程執(zhí)行處理業(yè)務(wù)時間太久解決方法代碼示例

    這篇文章主要介紹了Java多線程執(zhí)行處理業(yè)務(wù)時間太久解決方法代碼示例的相關(guān)資料,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 使用Mybatis-plus清空表數(shù)據(jù)的操作方法

    使用Mybatis-plus清空表數(shù)據(jù)的操作方法

    MyBatis 是一個基于 java 的持久層框架,它內(nèi)部封裝了 jdbc,極大提高了我們的開發(fā)效率,文中給大家介紹了MybatisPlus常用API-增刪改查功能,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • servlet過濾器(Filter)詳解(九)

    servlet過濾器(Filter)詳解(九)

    這篇文章主要為大家詳細介紹了servlet過濾器Filter的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Java小白第一次就能看懂的網(wǎng)絡(luò)編程

    Java小白第一次就能看懂的網(wǎng)絡(luò)編程

    網(wǎng)絡(luò)編程是指編寫運行在多個設(shè)備(計算機)的程序,這些設(shè)備都通過網(wǎng)絡(luò)連接起來。本文介紹了一些網(wǎng)絡(luò)編程基礎(chǔ)的概念,并用Java來實現(xiàn)TCP和UDP的Socket的編程,來讓讀者更好的了解其原理
    2021-08-08
  • 如何解決freemarker靜態(tài)化生成html頁面亂碼的問題

    如何解決freemarker靜態(tài)化生成html頁面亂碼的問題

    這篇文章主要介紹了如何解決freemarker靜態(tài)化生成html頁面亂碼的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • java實戰(zhàn)小技巧之字符串與容器互轉(zhuǎn)詳解

    java實戰(zhàn)小技巧之字符串與容器互轉(zhuǎn)詳解

    Java.lang.String是Java的字符串類. Srting是一個不可變對象,下面這篇文章主要給大家介紹了關(guān)于java實戰(zhàn)小技巧之字符串與容器互轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Java Hashtable機制深入了解

    Java Hashtable機制深入了解

    HashTable是jdk 1.0中引入的產(chǎn)物,基本上現(xiàn)在很少使用了,但是會在面試中經(jīng)常被問到。本文就來帶大家一起深入了解一下Hashtable,需要的可以參考一下
    2022-09-09
  • 關(guān)于Java多線程上下文切換的總結(jié)

    關(guān)于Java多線程上下文切換的總結(jié)

    CPU通過時間片分配算法來循環(huán)執(zhí)行任務(wù),當前任務(wù)執(zhí)行一個時間片后會切換到下一個任務(wù)。但是,在切換前會保存上一個任務(wù)的狀態(tài),以便下次切換回這個任務(wù)時,可以再次加載這個任務(wù)的狀態(tài),從任務(wù)保存到再加載的過程就是一次上下文切換,需要的朋友可以參考下
    2023-05-05
  • Deep Module深模塊之軟件設(shè)計

    Deep Module深模塊之軟件設(shè)計

    這篇文章主要介紹了軟件設(shè)計之Deep Module深模塊詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07

最新評論