Mybaist 注解 foreach 嵌套循環實現批量插入


第一種寫法(#使用占位符推薦):

@Insert("<script>"
				+ " insert into ${tb}  "
				+" <foreach collection=\"fields\" item=\"field\"   separator = \",\" open='(' close=')'> "
				+ "`${field}`"
				+"</foreach>"
				+ "values"
				+" <foreach collection=\"list\" item='mvo' index=\"list_index\"  separator = \",\" > "
				+"   <foreach collection=\"mvo.keys\" item=\"key\" open='(' close=')' separator = \",\">"
				+"    #{mvo.${key}} " 
				+"   </foreach>  "
				+"</foreach>"
				+ "</script>")
		int insertBatch(@Param("list")List<Map<String,Object>> housingList,@Param("fields") Set<String> keys,@Param("tb") String table) throws Exception;

  執行結果:

    insert into

    dmp_department_work ( `functional` , `num` , `power` , `state` , `department` , `table` )

    values ( ? , ? , ? , ? , ? , ? ) ,( ? , ? , ? , ? , ? , ? ) 

  

 第二種寫法($不使用占位符):

 

@Insert("<script>"
				+ " insert into ${tb}  "
				+" <foreach collection=\"fields\" item=\"field\"   separator = \",\" open='(' close=')'> "
				+ "  `${field}`"
				+" </foreach>"
				+ "values"
				+" <foreach collection=\"list\" item='mvo' index=\"list_index\"  separator = \",\" > "
				+"   <foreach collection=\"mvo.keys\" item=\"key\" open='(' close=')' separator = \",\">"
				+"    '${mvo[key]}' " 
				+"  </foreach>  "
				+"</foreach>"
				+ "</script>")
		int insertBatch(@Param("list")List<Map<String,Object>> housingList,@Param("fields") Set<String> keys,@Param("tb") String table) throws Exception;

  執行結果:

    insert into

    dmp_department_work ( `functional` , `num` , `power` , `state` , `department` , `table` )

    values ( '17' , '1' , '152' , '0' , '1' , 'dmp_data_task' ) , ( '17' , '1' , '153' , '0' , '1' , 'dmp_data_meet' ) 

 

注意:

   使用注解實現:

  •  ${}表示直接注入值,  使用#{}符號表示占位取值
  •  map遍歷取值三種方式:item.[key] 或 item[key] 或  item.key,如果傳入的是java實體,使用item.key取值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM