<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.4</version>
</dependency>
注意使用以上版本才不报错 版本支持问题
//插入
@Insert({
"<script>",
"insert into 1688_tips_option (option_id,tips_id) values ",
"<foreach collection='list' item='item' index='index' separator=','>",
"(#{item.option_id}, #{item.tips_id})",
"</foreach>",
"</script>"
})
@Options(useGeneratedKeys=true, keyProperty="id",keyColumn="id")
void innerTipsAndOptions(@Param("list")List<TipsAndOption> list);
//查询
@Select({
"<script>",
" SELECT * FROM supervisorsignin_subsidy WHERE id in (",
" <foreach collection='list' item='item' index='index' separator=','>",
" (#{item})",
" </foreach>)",
" </script>"
})
public abstract List<SupervisorsigninSubsidy> findBymonthlywagesdetail(@Param("list") List<String> list);
注意:@Param里必须写成list, foreach的collection也必须写成list,否则批量插入后会报错说找不到"cameraNo"字段,而无法返回主键。
@Options(useGeneratedKeys = true, keyProperty = “cameraNo”):加入返回主键ID,不然返回0,
keyProperty = “id” : 不需要添默认也是id,如果是其他可以填上
collection: 指定要遍历的集合(三种情况 list,array,map) !!!!在这种使用注解sql的情况下,这里请填写mapper方法中集合的名称
item:将当前遍历出的元素赋值给指定的变量 (相当于for循环中的i)
separator:每个元素之间的分隔符
index:索引。遍历list的时候是index就是索引,item就是当前值
#{变量名}就能取出变量的值也就是当前遍历出的元素
注意:@Param使用的是org.apache.ibatis.annotations.Param包