foreach元素的屬性主要有 item,index,collection,open,separator,close。
- item表示集合中每一個元素進行迭代時的別名,
- index指 定一個名字,用於表示在迭代過程中,每次迭代到的位置,
- open表示該語句以什么開始,
- separator表示在每次進行迭代之間以什么符號作為分隔 符,
- close表示以什么結束。
collection是這里面比較難得下面我們詳細介紹一下實際中的運用:
- 如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list
- 如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array
- 如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可
- 如果傳入的參數是多個的時候,我們也可以放在實體類中(這種實際用到也是非常多的)
下面詳細介紹這幾種方法:
1.
-
<select id="queryUser" resultType="com.example.demo.entity.UserEntity">
-
select * from tab_user where user_id in
-
<foreach collection="list" item="item" open="(" separator="," close=")" index="index">
-
#{item}
-
</foreach>
-
</select>
-
/**
-
* 根據傳入的id獲取對應的user
-
* @param ids
-
* @return
-
*/
-
List<UserEntity> queryUser(List<String> ids);
2.
-
<delete id="deleteUserById" >
-
delete from tab_user where user_id in
-
<foreach collection="array" item="item" open="(" separator="," close=")" index="index">
-
#{item}
-
</foreach>
-
</delete>
-
/**
-
* 根據傳入的ID刪除對應的用戶
-
* @param ids
-
* @return
-
*/
-
int deleteUserById (String[] ids);
3.
-
<select id="queryUserByUser" parameterType="java.util.Map" resultType="com.example.demo.entity.UserEntity">
-
select * from tab_user where user_name = #{name} and user_id in
-
<foreach collection="ids" item="item" open="(" separator="," close=")" index="index">
-
#{item}
-
</foreach>
-
</select>
-
/**
-
* 根據Map中的信息獲取對應的用戶
-
* @param user
-
* @return
-
*/
-
List<UserEntity> queryUserByUser(Map user);
4.
-
<insert id="addUsers" parameterType="com.example.demo.entity.UserEntity" >
-
insert into tab_user (user_id,user_name) values
-
<foreach collection="userId.split(',')" item="item" separator=",">
-
(#{item},#{userName})
-
</foreach>
-
</insert>
-
/**
-
* 根據傳入的user添加用戶 多個userId用逗號隔開
-
* @param user
-
* @return
-
*/
-
int addUsers(UserEntity user);
下面有附上完整的代碼:
-
-
-
-
<mapper namespace="com.example.demo.mapper.UserMapper">
-
-
<select id="queryUser" resultType="com.example.demo.entity.UserEntity">
-
select * from tab_user where user_id in
-
<foreach collection="list" item="item" open="(" separator="," close=")" index="index">
-
#{item}
-
</foreach>
-
-
</select>
-
-
<delete id="deleteUserById" >
-
delete from tab_user where user_id in
-
<foreach collection="array" item="item" open="(" separator="," close=")" index="index">
-
#{item}
-
</foreach>
-
</delete>
-
-
<select id="queryUserByUser" parameterType="java.util.Map" resultType="com.example.demo.entity.UserEntity">
-
select * from tab_user where user_name = #{name} and user_id in
-
<foreach collection="ids" item="item" open="(" separator="," close=")" index="index">
-
#{item}
-
</foreach>
-
</select>
-
-
<insert id="addUsers" parameterType="com.example.demo.entity.UserEntity" >
-
insert into tab_user (user_id,user_name) values
-
<foreach collection="userId.split(',')" item="item" separator=",">
-
(#{item},#{userName})
-
</foreach>
-
</insert>
-
</mapper>
-
package com.example.demo.mapper;
-
-
-
import com.example.demo.entity.UserEntity;
-
-
import java.util.List;
-
import java.util.Map;
-
-
/**
-
* @author pidaowei
-
*/
-
public interface UserMapper {
-
-
/**
-
* 根據傳入的id獲取對應的user
-
* @param ids
-
* @return
-
*/
-
List<UserEntity> queryUser(List<String> ids);
-
-
/**
-
* 根據傳入的ID刪除對應的用戶
-
* @param ids
-
* @return
-
*/
-
int deleteUserById (String[] ids);
-
-
/**
-
* 根據Map中的信息獲取對應的用戶
-
* @param user
-
* @return
-
*/
-
List<UserEntity> queryUserByUser(Map user);
-
-
/**
-
* 根據傳入的user添加用戶 多個userId用逗號隔開
-
* @param user
-
* @return
-
*/
-
int addUsers(UserEntity user);
-
-
}
-
package com.example.demo.entity;
-
import lombok.Data;
-
/**
-
* @author pidaowei
-
*/
-
-
public class UserEntity {
-
-
private String userId;
-
private String userName;
-
}
-