当传入的对象不是实体类而是一个map对象的时候,xml文件的遍历
一般来说,我们一个简单的增删查改数据流程是:
web页面—>controller—>serviceimpl—>mapper—>xml
在这过程中,通常以一个实体类作为数据存储对象(pojo),但是但我们一些很少用到的表,我们没有必要去创建一个实体对象,我们可以用map进行存储。但是用map存储的时候,我们在xml文件中怎么遍历呢,一开始我也不清楚,在网上找了很多方法后,自己总结了一个demo,希望可以对大家有帮助。
html
var forminfo = $('#id').serializeArray(); //获取表单的数据id与表单id一致
console.log(forminfo);
$.ajax({
type: "post",
url: ctx+"business/datadir/saveSourceInfo",
dataType: "json",
data: forminfo,
success:function () {
},
error:function () {
}
});
controller
@RequestMapping("saveSourceInfo")
@ResponseBody
public Boolean saveSourceInfo(@RequestParam Map<String, String> map){
System.out.println(map);
boolean flag = true;
return flag;
}
mapper
int insertData(@Param("map") Map<String, Object> map, @Param("tableName") String tableName);
int updateData(@Param("map") Map<String, Object> map, @Param("tableName") String tableName, @Param("id") String id);
mapper.xml
<insert id="insertData">
INSERT INTO ${tableName}
<foreach collection="map" separator="," close=")" open="(" index="key" item="val">
<if test="val != null">
${key}
</if>
</foreach>
VALUES
<foreach collection="map" separator="," close=")" open="(" index="key" item="val">
<if test="val != null">
#{val}
</if>
</foreach>
</insert>
<update id="updateData">
UPDATE ${tableName}
SET
<foreach collection="map" item="val" index="key" separator=",">
<if test="val != null">
${key} = #{val}
</if>
<if test="val == null">
${key} = null
</if>
</foreach>
WHERE JTT_PRIMARY_KEY = #{id}
</update>
原创不易,不喜勿喷,谢谢