<!-- 模糊查詢(正確版本) 返回值parameterType返回的是一個查詢對象
查詢對象:就是把要放入的參數存在一個單獨javabean中讓對象作爲參數就可以傳入
模糊查詢裏面的數據要讓它變爲字面值而不是字符串因爲字符串是由單引號,在這裏我們不需要單引號
-->
<select id="selectByAddressa" parameterType="QueryCriteria" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
from st_student WHERE address LIKE '%${address}%';<!-- 正確的寫法 -->
</select>
<!-- 集合查詢 -->
<select id="selectByIdList" resultMap="BaseResultMap" parameterType="list" >
select
<include refid="Base_Column_List" />
from st_student
<!-- where id in (1,2,3)意思是查詢id爲1,2,3的記錄行
foreach就是循環遍歷
item表示集合中每一個元素進行迭代時的別名,
index指 定一個名字,用於表示在迭代過程中,每次迭代到的位置,
open表示該語句以什麼開始,
separator表示在每次進行迭代之間以什麼符號作爲分隔 符,
close表示以什麼結束。
collection
在使用foreach的時候最關鍵的也是最容易出錯的就是collection屬性,該屬性是必須指定的,
但是在不同情況下,該屬性的值是不一樣的,主要有一下3種情況:
1. 如果傳入的是單參數且參數類型是一個List的時候,collection屬性值爲list
2. 如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值爲array
3. 如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可以封裝成map,
實際上如果你在傳入參數的時候,在breast裏面也是會把它封裝成一個Map的,map的key就是參數名,
所以這個時候collection屬性值就是傳入的List或array對象在自己封裝的map裏面的key
-->
where id in (
<foreach collection="list" item="id" index="index" separator="," >
#{id}
</foreach>
)
</select>