Mybatis使用注解两种方式实现批量操作

@Insert({ "" })
	
	@Options(useGeneratedKeys = true)
	int addUserTest(@Param("list") List lists);
相关术语解释:


collection: 指定要遍历的集合(三种情况 list,array,map) !!!!在这种使用注解sql的情况下,这里请填写mapper方法中集合的名称
                
item:将当前遍历出的元素赋值给指定的变量 (相当于for循环中的i)
separator:每个元素之间的分隔符 
index:索引。遍历list的时候是index就是索引,item就是当前值 
#{变量名}就能取出变量的值也就是当前遍历出的元素

在下面的程序中直接获取List中的Test的id属性即可lists.get(0).getId。

注意@Param一定要是list;不然获取id会为空

第二种方式

使用@InsertProvider注解
  @InsertProvider(type =StandardNoticeRecordSqlprovider.class, method="addStandardNoticeRecord" )
    int addStandardNoticeRecord(@Param("list")List lists );

import java.text.MessageFormat;
import java.util.List;
import java.util.Map;

import com.czhl.training.notice.repository.model.StandardNoticeRecord;

public class StandardNoticeRecordSqlprovider {

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public String addStandardNoticeRecord(Map map) {
		List lists =(List) map.get("list");
		StringBuilder builder = new StringBuilder();
		builder.append(" INSERT INTO `standard_notice_record` ");
		builder.append(" (`UUID`, `STANDARD_NOTICE_ID`, `WECHAT_USER_ID`, `TRAINING_ID`, `IS_DELETED`, `CREATE_TIME`, `MODIFY_TIME`,`SEND_TIME`,`TITLE`) ");
		builder.append(" VALUES ");
		MessageFormat messageFormat = new MessageFormat(" (#'{'list[{0}].uuid}, #'{'list[{0}].standardNoticeId}, #'{'list[{0}].wechatUserId}, #'{'list[{0}].trainingId}, #'{'list[{0}].isDeleted}, #'{'list[{0}].createTime}, #'{'list[{0}].modifyTime}, #'{'list[{0}].sendTime}, #'{'list[{0}].title}) ");
		for (int i = 0; i < lists.size(); i++) {
			builder.append(messageFormat.format(new Object[]{i}));
			if (i

你可能感兴趣的:(Mybatis使用注解两种方式实现批量操作)