po层:
两个属性名:table(String)、params(HashMap<String,String>)

dao层:
//更新数据
public Integer updateData(@Param("table") String table, @Param("params") HashMap<String, String> params);
mapper映射文件:
<update id="updateData" parameterType="data" statementType="PREPARED">
update ${table} set
<foreach item="value" index="key" collection="params" separator=",">
<if test="key != 'ID'">${key} = #{value}</if>
</foreach>
where
<foreach item="value" index="key" collection="params" separator=",">
<if test="key == 'ID'">ID = #{value}</if>
</foreach>
</update>
通过< foreach>标签遍历params中的键值对
Service层
//更新数据
public Integer updateData(String table, HashMap<String, String> params);
Impl实现类:
//更新数据
@Override
public Integer updateData( String table,HashMap<String,String> params) {
int num = this.dataDao.updateData(table,params);
return num;
}
Controller层
/**
* 更新数据
* @param data
* @return
*/
@RequestMapping(value = "/UPDATE")
@ResponseBody
public String updateData(@RequestBody Data data) {
int num = dataService.updateData(data.getTable(), data.getParams());
return num > 0 ? "ok" : "error";
}
数据更新成功返回ok,失败返回error
使用Postman进行接口测试:

发送请求后,响应体内容

数据表更新成功
原customer表数据

调用接口后customer表数据

本文介绍了一种使用MyBatis框架通过动态SQL更新数据库数据的方法。具体展示了如何在PO层、DAO层、Mapper映射文件、Service层及Controller层实现数据更新,并通过Postman进行接口测试,确保数据更新操作的正确性和效率。
1万+





