mybatis xml foreach 标签?就这么简单

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 标签?就这么简单)