Mybatis中foreach的使用
foreach一共有List,array,Map三种类型的使用场景。
foreach的主要用在构建in条件中,它可以在sql语句中进行迭代一个集合。
- collection:表示迭代集合的名称,可以使用@Param注解指定(必选参数)
- item:表示集合中每一个元素进行迭代时的别名,若collection为List、Set或者数组,则表示其中的元素;若collection为map,则代表key-value的value(必选参数)
- index:指定一个名字,用于表示在迭代过程中,每次迭代到的位置,在list、Set和数组中,index表示当前迭代的位置,在map中,index代指是元素的key(可选参数)
- open:表示该语句以什么开始,mybatis会将该字符拼接到整体的sql语句之前,并且只拼接一次(可选参数)
- separator:表示在每次进行迭代之间以什么符号作为分隔符(可选参数)
- close:表示以什么结束,mybatis会将该字符拼接到整体的sql语句之后(可选参数)
参数list类型插入:
<insert id="insertUser" parameterType="java.util.List">
insert into user
(user_id,user_name)
values
<foreach collection="addList" item="item" index="index" separator="," open="(" close=")" >
#{item.userId,jdbcType=VARCHAR},#{item.userName,jdbcType=VARCHAR}
</foreach>
</insert>
insert into user (user_id,user_name) values (userId,userName),(userId,userName),(userId,userName);
参数List类型查询:
<select id="getList" parameterType="java.util.List" resultType="User">
select * from t_user where id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</select>
参数Array类型查询:
<select id="getList" parameterType="java.util.ArrayList" resultType="User">
select * from t_user where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</select>
参数Map类型查询:
<select id="getList" parameterType="java.util.HashMap" resultType="User">
select * from t_user where id in
<foreach collection="map" item="value" index="key" open="(" separator="," close=")">
#{value}
</foreach>
</select>
分类:
MySQL
, mybatis-plus
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)