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 新疆

相关推荐

头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
1 7 评论
分享
牛客网
牛客企业服务