场景搭建
通过调用存储过程实现该功能后,需要在MyBatis中调用该存储过程并查询返回参数:
方法实现
mapper.xml
在mapper.xml中新建【paramterMap】,包含传入存储过程的参数以及传出存储过程的参数
<parameterMap id="pm" type="java.util.Map">
<parameter property="actualPlaceId" jdbcType="BIGINT" mode="IN"></parameter>
<parameter property="isContain" jdbcType="INTEGER" mode="OUT"></parameter>
</parameterMap>
参数 | 含义 |
property | 参数名称 |
jdbcType | 参数数据类型 |
mode | 参数类型,IN表示是传入参数,OUT表示传出参数,也即是存储过程返回的参数 |
方法调用:
<select id="selectByActualId" parameterMap="pm" statementType="CALLABLE">
CALL queryActualInLogic(#{actualPlaceId,mode=IN},#{isContain,mode=OUT,jdbcType=INTEGER});
</select>
service实现
@Override
@Logs(title = "删除实际区域", code = "actualArea")
public Integer deleteByPrimaryKey(Long actualPlaceId) {
// TODO: 删除判断实际区域已经绑定逻辑区域的话不可以删除
Map<String, Object> param = new HashMap<>();
param.put("actualPlaceId",actualPlaceId);
actualAreaMapper.selectByActualId(param);
if (Integer.parseInt(String.valueOf(param.get("isContain"))) == 1){
throw new BusinessException( "实际区域已经绑定逻辑区域,无法删除!" );
}
return actualAreaMapper.deleteByPrimaryKey( actualPlaceId );
}