mybatis注釈一括追加

6884 ワード

mybatis注記一括追加の使用
mybatis注記を一括して追加する場合
1.mapperインタフェース
  @InsertProvider(type = SourcePackageImportSqlProvinder.class, method = "batchinsert")
    Integer batchInsertRecommend(@Param("recommendList") List<PartnerResourcesRecommend> recommendList);

2 sql接合
public String batchinsert(Map<String, Object> map) {
		List<PartnerPackageSourceCate> partnerPackageSourceCates = (List<PartnerPackageSourceCate>) map.get("list");
		StringBuilder sb = new StringBuilder();
		sb.append("insert into table_name ");
		sb.append(
				"(unique_code,partner_id,partner_pid,package_number,cid,recources_id,type,create_time,back_uid,resources_name,resources_keyword,torder) ");
		sb.append("values ");
		MessageFormat mf = new MessageFormat(
				"(#'{'list[{0}].unique_code}, #'{'list[{0}].partner_id}, #'{'list[{0}].partner_pid},#'{'list[{0}].package_number},#'{'list[{0}].cid},"
						+ "#'{'list[{0}].recources_id},#'{'list[{0}].type},#'{'list[{0}].create_time},#'{'list[{0}].back_uid},#'{'list[{0}].resources_name},"
						+ "#'{'list[{0}].resources_keyword},#'{'list[{0}].torder})");
		for (int i = 0; i < partnerPackageSourceCates.size(); i++) {
			sb.append(mf.format(new Object[] { i +""}));
			if (i < partnerPackageSourceCates.size() - 1) {
				sb.append(",");
			}
		}
		return sb.toString();
	}

に注意
1.list集合が1000個を超えるとmf.format(new Object[]{i}はlist[{1000}]とつづられて文字列が間違って報告されるので範囲を超え、iで上空の文字列をつづる.