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##存储过程#九九八十一难 文章被收录于专栏
主要是工作中遇到的坑和一些项目中常见功能的实现