记录Mybatis写动态业务代码情况;
1、入参为集合(List<Map>)情况下,按照Map(为保证有序性,应该使用linkedhashmap)中value进行循环,先循环集合再循环集合中的每个对象:
Boolean batchAddData(@Param("tableName") String tableName,
@Param("tableColumn") String tableColumn,
@Param("dataList") List<Map> dataList);
<insert id="batchAddData" parameterType="map">
INSERT INTO ${tableName} (${tableColumn})
VALUES
<foreach collection="dataList" item="line" separator=",">
(
<foreach collection="line" index="key" item="value"
separator=",">
#{value}
</foreach>
)
</foreach>
</insert>
2、按照Map循环动态入参,Map中的key为字段,value为字段业务数据;
Boolean addInputData(@Param("tableName") String tableName, @Param("map") Map map);
<insert id="addInputData">
insert into ${tableName}
<foreach collection="map.keys" item="key" open="(" close=")"
separator=",">
${key}
</foreach>
values
<foreach collection="map.values" item="value" open="("
close=")" separator=",">
#{value}
</foreach>
</insert>