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##存储过程#
九九八十一难 文章被收录于专栏

主要是工作中遇到的坑和一些项目中常见功能的实现

全部评论
存储创建语句收藏了
点赞 回复 分享
发布于 2023-02-20 22:36 山东
mapper层的包有点看不太明白呢
点赞 回复 分享
发布于 2023-02-20 22:57 新疆

相关推荐

offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
1 7 评论
分享
牛客网
牛客企业服务