mybatis中调用MySQL存储过程
存储过程创建语句:
CREATE DEFINER=`root`@`%` PROCEDURE `pro_index_data`(IN `areaCode` varchar(50),OUT `deviceSum` int,OUT `abnormal` int,OUT `areaSum` int) BEGIN if areaCode is not NULL then select count(id) from dma_device_info where device_type=-1 and FIND_IN_SET(area_pid,areaCode)>0 into deviceSum; select count(id) from dma_device_info where device_type=-1 and device_status=2 and FIND_IN_SET(area_pid,areaCode)>0 into abnormal; select count(DISTINCT(device_area)) from dma_device_info where device_type=-1 and FIND_IN_SET(area_pid,areaCode)>0 into areaSum; ELSE select count(id) from dma_device_info where device_type=-1 into deviceSum; select count(id) from dma_device_info where device_type=-1 and device_status=2 into abnormal; select count(DISTINCT(device_area)) from dma_device_info where device_type=-1 into areaSum; END IF; END
mybatis调用XXXXMapper.xml:
<select id="queryDeviceCount" parameterType="java.util.Map" statementType="CALLABLE">
{
call
pro_index_data(
#{areaCode,mode=IN,jdbcType=VARCHAR},
#{deviceSum,mode=OUT,jdbcType=INTEGER},
#{abnormal,mode=OUT,jdbcType=INTEGER},
#{areaSum,mode=OUT,jdbcType=INTEGER}
)
}
</select>
mapper层:
void queryDeviceCount(HashMap<String,Object> map)
service层调用:
注:参数名保持一致。调用该存储过程后,输出参数值会返回到传参的Map中,直接get对应的键即可。
#mybatis##MySQL##存储过程#九九八十一难 文章被收录于专栏
主要是工作中遇到的坑和一些项目中常见功能的实现

海康威视公司福利 1198人发布