当前位置: 首页 > wzjs >正文

秦皇岛网站制作专家著名品牌展厅设计

秦皇岛网站制作专家,著名品牌展厅设计,网站 开发 价格,太原网站制作价格在 MyBatis 中&#xff0c;<foreach> 标签用于遍历集合&#xff08;Collection、List、Array、Map&#xff09;&#xff0c;常用于构建动态 SQL 语句&#xff08;如 IN 查询、批量插入等&#xff09;。以下是详细用法和示例&#xff1a; 核心属性 属性描述collection必填…

在 MyBatis 中,<foreach> 标签用于遍历集合(Collection、List、Array、Map),常用于构建动态 SQL 语句(如 IN 查询、批量插入等)。以下是详细用法和示例:


核心属性

属性描述
collection必填:传入的集合参数名(或默认别名 list/array
item必填:遍历时元素的别名
index遍历的索引(List/Array 时为序号,Map 时为 key)
open循环开始时的字符串(如 (
close循环结束时的字符串(如 )
separator元素间的分隔符(如 ,

一、遍历 List/Array 的 4 种场景

1. 直接传入 List(默认别名 list

xml

复制

下载

运行

<select id="selectByIds" resultType="User">SELECT * FROM userWHERE id IN<foreach collection="list" item="id" open="(" separator="," close=")">#{id}</foreach>
</select>

java

复制

下载

List<User> selectByIds(List<Long> ids); // 调用时传入 List
2. 使用 @Param 指定集合名

xml

复制

下载

运行

<foreach collection="ids" item="id" ...>  <!-- 使用自定义名称 -->

java

复制

下载

List<User> selectByIds(@Param("ids") List<Long> ids); // 指定参数名为 ids
3. 遍历 Array(默认别名 array

xml

复制

下载

运行

<foreach collection="array" item="item" ...>

java

复制

下载

List<User> selectByIdArray(Long[] idArray);
4. 遍历对象中的集合属性

java

复制

下载

public class QueryDTO {private List<Long> userIds;// getter/setter
}

xml

复制

下载

运行

<foreach collection="userIds" item="id" ...>  <!-- 直接使用属性名 -->

java

复制

下载

List<User> selectByDTO(QueryDTO dto);

二、遍历 Map 示例

xml

复制

下载

运行

<insert id="insertUsers">INSERT INTO user (name, age) VALUES<foreach collection="map" item="value" index="key" separator=",">(#{key}, #{value})  <!-- key=用户名, value=年龄 --></foreach>
</insert>

java

复制

下载

void insertUsers(@Param("map") Map<String, Integer> userMap); // key:name, value:age

三、批量插入(常用)

xml

复制

下载

运行

<insert id="batchInsert">INSERT INTO user (name, email) VALUES<foreach collection="users" item="user" separator=",">(#{user.name}, #{user.email})</foreach>
</insert>

java

复制

下载

int batchInsert(@Param("users") List<User> users);

⚠️ 注意事项

  1. 集合为 null 时的处理
    若传入的集合为 null<foreach> 会报错。建议在 Java 代码中做空集合检查。

  2. 性能优化
    批量操作时,避免单次拼接过多 SQL(如超过 1000 条)。可分批执行:

    java

    复制

    下载

    for (int i = 0; i < users.size(); i += 200) {mapper.batchInsert(users.subList(i, Math.min(i + 200, users.size())));
    }
  3. 数据库方言差异
    部分数据库(如 Oracle)批量插入语法不同,需调整 SQL 结构:

    xml

    复制

    下载

    运行

    <!-- Oracle 批量插入示例 -->
    INSERT ALL
    <foreach collection="users" item="user">INTO user (name, email) VALUES (#{user.name}, #{user.email})
    </foreach>
    SELECT 1 FROM DUAL

完整示例:动态更新多个字段

xml

复制

下载

运行

<update id="updateUser">UPDATE user<set><foreach collection="updateMap" item="value" index="key" separator=","><if test="value != null">${key} = #{value}  <!-- 注意:字段名用 ${} 防注入需确保安全 --></if></foreach></set>WHERE id = #{userId}
</update>

java

复制

下载

void updateUser(@Param("userId") Long id,@Param("updateMap") Map<String, Object> fields // key=字段名, value=新值
);

通过灵活使用 <foreach>,可以高效处理集合型参数,简化动态 SQL 的编写。


文章转载自:

http://8bzVpul7.qydgk.cn
http://d22wsaaz.qydgk.cn
http://zquK4wsv.qydgk.cn
http://acMi5Nni.qydgk.cn
http://YiRjjmJq.qydgk.cn
http://iJsCqjkm.qydgk.cn
http://Mk3YLaGy.qydgk.cn
http://IFhtuaPz.qydgk.cn
http://Ov1TPdMI.qydgk.cn
http://hSvMEIhw.qydgk.cn
http://HzkYsVmo.qydgk.cn
http://MD0JdLeF.qydgk.cn
http://hoCVKDvL.qydgk.cn
http://ZNTz2Mk6.qydgk.cn
http://IWSCBSCJ.qydgk.cn
http://ArvzVaaV.qydgk.cn
http://fFgFYCOH.qydgk.cn
http://2lmpov2s.qydgk.cn
http://0N1wShK7.qydgk.cn
http://BewSfIkt.qydgk.cn
http://5WXfWRNU.qydgk.cn
http://UG3xl7pr.qydgk.cn
http://y1PhzGet.qydgk.cn
http://9aG8ZBL8.qydgk.cn
http://wCMPcR3N.qydgk.cn
http://dFf8m4tw.qydgk.cn
http://fHD3XYCs.qydgk.cn
http://40vmN8G2.qydgk.cn
http://I8o8v1oF.qydgk.cn
http://Y7PWeZVh.qydgk.cn
http://www.dtcms.com/wzjs/772355.html

相关文章:

  • 比较厉害的网站制作公司网址转短链接
  • 银川网站设计建设友链交换平台
  • 深圳电子网站开发成都it外包公司
  • 网站建设公司的企业特色有哪些中国苏州官网
  • 电商网站开发教学视频网站上的菠菜游戏哪里可以做
  • 定制企业网站有哪些广州网站建设推广公司
  • 网站优化升级微网站开发平台wizi
  • 电子系统设计网站wordpress ghostjs
  • 网站建设总体规划包括哪些网页联系我们怎么做
  • 返利网站怎么做的近期热点新闻事件50个
  • 张掖网站建设培训驻马店网站建设价格
  • 网站建设背景及意义网站颜色搭配技巧
  • 张店网站建设哪家好wordpress看板娘
  • 前端是做网站吗开发一个app需要多少钱?
  • 网站kv如何做做网站哪家专业
  • 大型商城网站建站龙岗网站制作新闻
  • pc网站转换手机网站代码livemesh wordpress
  • 常德网站建设策划方案优化的基本意思
  • 网站建设需求调研问卷中山微网站建设多少钱
  • 徐州服饰网站建设南京门户网站建设
  • 中科建建设发展有限公司网站传媒公司名称
  • 菏泽网站建设推广厦门企业网站seo
  • 网站代理打开信息系统开发方案
  • 长安区建设局官网站站难道做网站必须用vue框架吗
  • 代码网站怎么制作网站框架方案
  • 优秀高端网站建设报价国际贸易网站大全
  • 朝阳免费网站制作百度流量统计
  • 湖南省水利水电建设工程学校网站互联网有什么赚钱的好项目
  • 上海营销型网站开发小店怎么做网站
  • 怎么把自己的网站推广海南钢网架公司