MyBatis實現In查詢


 

1.MyBatis提供foreach語句實現In查詢。foreach語法如下:

 

 

  collection:該屬性的對應方法的參數類型可以是List、數組、Map。如果方法的參數類型不屬於前三種,則必須和方法參數@Param指定的元素名一致。

 

 

  item: 表示迭代過程中每個元素的別名。可以隨便起名,但是必須跟元素中的#{}里面的名稱一致。

 

 

  index:表示迭代過程中每次迭代到的位置(下標)

 

 

  open:前綴

 

 

  close:后綴

 

 

  separator:分隔符,表示迭代時每個元素之間以什么分隔。

 

 2.當Dao層方法的參數只有一個時,有兩種方式實現:

  法1:如果參數類型是List, 則mapper.xml文件中collection值必須為list。

  法2:如果參數類型是Array,則mapper.xml文件中collection值必須為array。

3.實現示例

public interface UserInfoDao { // 法1:參數類型是List List<UserInfoDO> getUserInfobyNames1(List<String> names); // 法2:參數類型是Array List<UserInfoDO> getUserInfobyNames2(String[] names); }
<!-- 法1:參數類型是List --> <select id="getUserInfobyNames1" resultType="com.zijikanwa.model.UserInfoDO"> SELECT * FROM user_info WHERE user_name in <foreach collection="list" item="name" index="index" open="(" close=")" separator=","> #{name} </foreach> </select> <!-- 法2:參數類型是Array --> <select id="getUserInfobyNames2" resultType="com.zijikanwa.ssmspringboottest.model.UserInfoDO"> SELECT * FROM user_info WHERE user_name in <foreach collection="array" item="name" index="index" open="(" close=")" separator=","> #{name} </foreach> </select>

當Dao層方法的參數有多個時,有兩種方式實現:

法1:使用@Param(“xxx”)進行參數綁定
public interface UserInfoDao { List<UserInfoDO> getUserInfobyIdAndName1(@Param("id") int id, @Param("names") String[] names); }
<select id="getUserInfobyIdAndName1" resultType="com.zijikanwa.ssmspringboottest.model.UserInfoDO"> SELECT * FROM user_info WHERE user_info_id=#{id} and user_name in <foreach collection="names" item="name" index="index" open="(" close=")" separator=","> #{name} </foreach> </select>

法2:通過Map來傳參數
public interface UserInfoDao { List<UserInfoDO> getUserInfobyIdAndName2(Map<String,Object> params); }
 
<select id="getUserInfobyIdAndName2" resultType="com.zijikanwa.ssmspringboottest.model.UserInfoDO"> SELECT * FROM user_info WHERE user_info_id=#{id} and user_name in <foreach collection="names" item="name" index="index" open="(" close=")" separator=","> #{name} </foreach> </select> 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM