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-27 10:28
点赞 评论 收藏
分享
我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
评论
1
7
分享
牛客网
牛客企业服务