一、需求
现有期间核查计划表(data_period_inspect_content)和期间表(data_period_inspect_public)两个数据表。其中content表的public_id与public表的id值相对应。
先在前端新增一条public表数据,然后用户选择需要更新的content表数据。向后端传入新增的public表id,和选择的content表id数组。后端根据接收的两个参数对content表public_id进行批量更新。
二、实现
mapper.xml代码:
<!-- 根据ID数组 更新期间核查计划表的public_id -->
<update id="updatePublicId" parameterType="DataPeriodInspectContent">
update data_period_inspect_content
<trim prefix="SET" suffixOverrides=",">
<if test="publicId != null">public_id = #{publicId},</if>
</trim>
where data_period_inspect_content.id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</update>
mapper.java代码:
/**
* 根据ID数组修改期间核查计划列表public_id
* @param ids 期间核查计划主键集合
* @return 期间核查计划集合
*/
public int updatePublicId(@Param("publicId") int publicId, @Param("ids") Long[] ids);
serviceImpl代码:
/**
* 根据ID数组修改期间核查计划列表public_id
* @param ids
* @return
*/
@Override
public int updatePublicId(int publicId,Long[] ids)
{
return dataPeriodInspectContentMapper.updatePublicId(publicId,ids );
}
Iservice.java代码:
/**
* 根据数组修改期间数据public_id
*
* @param ids 期间核查计划主键集合
* @return 结果
*/
public int updatePublicId(int publicId,Long[] ids);
controller代码:
/**
* 根据数组修改期间数据内容public_id
*/
@PreAuthorize("@ss.hasPermi('system:content:edit')")
@Log(title = "期间数据内容", businessType = BusinessType.UPDATE)
@PutMapping("/{publicId}/{ids}")
public AjaxResult editPublicId(@PathVariable int publicId, @PathVariable Long[] ids)
{
return toAjax(dataPeriodInspectContentService.updatePublicId(publicId,ids));
}
前端代码如下:
js代码:
// 修改期间数据内容Public_id
export function updatePublicId(publicId,ids) {
return request({
url: '/system/content/' + publicId +'/'+ ids,
method: 'put'
})
}
html代码
/** 查询期间表列表并以此更新content表Public_id */
getPublicList() {
this.loading = true;
listPublic({
pageNum: 1,
pageSize: 999
}).then(response => {
this.publicList = response.rows;
this.publicNum = response.total-1;
updatePublicId(this.publicList[this.publicNum].id,this.ids);//根据数组更新期间核查计划表Public_id
this.loading = false;
});
},
三、注意
mybatis传入两个参数时,需要加@Param。否则会出现 “Parameter ‘xxxx’ not found. Available parameters are [arg1, arg0, param1, param2]” 错误提示。
错误写法:
public int updatePublicId(int publicId, Long[] ids);
正确写法:
public int updatePublicId(@Param("publicId") int publicId, @Param("ids") Long[] ids);
参考链接:https://blog.csdn.net/fenger_c/article/details/104144247