美文网首页
mybatis xml foreach 标签?就这么简单

mybatis xml foreach 标签?就这么简单

作者: SharpChen | 来源:发表于2022-10-14 13:33 被阅读0次

MyBatis 中,foreach 标签可用于批量插入记录,当然,批量插入的方式有很多,本篇文章主要讲解在 mapper 文件中,使用 foreach 标签批量插入。

collection(必选)

collection 属性是 foreach 标签中最复杂的一个属性,不过别慌,我们今天就要把它捋直了。首先我们需要明白,mybatis 在使用 foreach 标签批量插入数据时,会将 DAO 方法中参数封装成 Map 类型,然后在 collection 属性中,指定批量数据源所在 Map 中的 key,通这个 key 拿到批量数据源。到这里我们明白了,其实 collection 属性就是 key 嘛 -_-。明白了这个,我们再深入

  1. 如果只有一个参数
    • 参数类型是 「List」:key 默认为 list 或 collection,如果要修改这个默认名,用 @Param 注解即可
    • 参数类型是 「数组」:key 默认为 array,修改默认名同 List
    • 参数类型是 「Map」: 很遗憾,单个参数时将因取不到值而异常,但多个参数时可以用此类型
    • 参数类型是 「对象」:key 需要指定对象中类型为「List」或「数组」的属性,且这个属性必须有 get 方法
  2. 如果有多个参数
    • key 默认为参数名,取的是什么名就是什么;同时,mybatis 也会按参数顺序,为每个参数默认生成名为 param1,param2,... 的 key,不过很少用
    • 批量数据源类型可以是 List、数组、Map。如果是 Map,值可以放对象或另一个 Map,整出一些复杂插入

item(必选)

每一个元素进行迭代时的别名,可以随便取

index(可选)

  • 参数类型是 List 或 数组: 值为每次迭代到的下标位置
  • 参数类型是 Map:值为 key
  • 名字随便取

separator(可选)

表示在每一次进行迭代之间以什么符号作为分隔符

open(可选)

整个循环完成时,遍历出的所有结果拼接一个开始的字符,而不是每一次

close(可选)

同 open,只是在结束位置

其它

  • mybatis 插入成功后返回的是本次插入的总条数,而不是成功与否的状态

相关文章

网友评论

      本文标题:mybatis xml foreach 标签?就这么简单

      本文链接:https://www.haomeiwen.com/subject/vzfczrtx.html