jdbcUrl如下
jdbcUrl=jdbc:mysql://localhost:8080/dbname?characterEncoding=UTF-8&allowMultiQueries=true
注:加上allowMultiQueries=true 才能支持多条的(以分号 ‘;’隔开)SQL执行。
业务示例拓展:
1、前端post请求参数
{
"macList": [{
"macid": 1,
"age": 45,
"number": 3
}, {
"macid": 3,
"age": 24,
"number": 56
}]
}2、Java VO
public class MacVO implements Serializable {
//.....
private List<Mac> macList; //和前端传来的名称要对应,注意List中的元素是Mac对象
//..... 省略set get
}注:属性名macList是对应JSON的key名称,List中的元素是Mac对象
3、java Bean
public class Mac implements Serializable {
//.....
private Integer macid;
private Integer age;
private Integer number;
private String name;
private String hobby;
//..... 省略set get
}3、Controller中的方法
@RequestMapping(value = "/updateMacMsg",method = RequestMethod.POST,produces = "application/json;charset=UTF-8")
@ResponseBody
public Object updateMacMsg(@RequestBody MacVO macVO) {
//...
int rows = macService.updateMacMsg(macVO);
//...
return obj;
}4、Service层
public Integer updateMacMsg(MacVO macVO);5、MyBatis的Mapper配置xml中写成如下代码,就有批量更新的操作;因此jdbcUrl中加上allowMultiQueries = true
<update id="updateMacMsg" parameterType="MacVO">
<foreach collection="macList" item="obj" index="index" open="" close="" separator=";">
update Table_Name
<set>
<if test="obj.age != null">
MAC_AGE = #{obj.age,jdbcType=INTEGER},
</if>
<if test="obj.number != null">
MAC_NUMBER = #{obj.number,jdbcType=INTEGER},
</if>
</set>
<where>
<if test="obj.macid != null">
AND MAC_ID = #{obj.macid,jdbcType=INTEGER},
</if>
<if test="obj.age != null">
AND MAC_AGE = #{obj.age,jdbcType=INTEGER},
</if>
<if test="obj.number != null">
AND MAC_NUMBER = #{obj.number,jdbcType=INTEGER},
</if>
</where>
</foreach>
</update>注:
collection="macList"中的macList是MacVO对象的macList属性。
前端JOSN对象在VO用List集合来接收,所以SQL中要对List中每个元素对象进行更新操作,用<foreach>遍历整一块动态SQL。
版权声明:本文为mskymt原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。