mybatis-plus如何接收存储过程的返回值

zihao

mybatis-plus是很好用的,让我们写一些增删改查的时候特别快速便捷,但是要想玩点花活基本没人用mybatis-plus,那mybatis-plus怎么玩点花活(接收存储过程的返回值)呢?

觉得有帮助记得帮我点个赞啊😄

先扫一眼这个sql存储过程

--用户组织查询,显示列:【级距/姓名/手机号/直接上级】
ALTER proc [dbo].[sp_Rpt_Branch] 
@OperID		int,
@UserID		int,
@Msg		varchar(200) OUTPUT
as
begin
if @UserID != @OperID
 begin
	set  @Msg = '报错,查询人员错误!' 
-- 	RETURN @Msg 
	END
else
 begin
	select 1 as ilevel,a.phonenumber as cphone,a.nick_name as cname,a.f_balance as fbalance,b.phonenumber as clevelphone,b.nick_name cleadername
	from v_sys_user a join v_sys_user b on a.id_leader = b.user_id
	where b.user_id = @UserID 
	order by b.phonenumber,a.phonenumber
END
 begin
		set @Msg = '查询人员成功!'
-- 	RETURN @Msg 
end
end

查询结果为
在这里插入图片描述
在这里插入图片描述
我的目标是接收到这个返回值结果1(2)

下面是代码部分:

Domain
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 测试存储过程接收对象
 *
 * @author zihao
 * @date 2022-08-22
 */
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SysCunChuUser implements Serializable {
	//流标识符,序列化ID,保持不同版本的兼容性,在程序版本升级时避免程序报出版本不一致的错误。
    private static final long serialVersionUID = 1L;
    //用了lombok所以只要定义参数就行了
    private String ilevel;
    private String cphone;
    private String cname;
    private String fbalance;
    private String clevelphone;
    private String cleadername;
    private String field1;
}
Controller
// 以下测试存储过程,仅作保留
      Map<String, Object> params = new HashMap<>();
      params.put("operid",1);
      params.put("userid",1);
      params.put("field1","");
      List<SysCunChuUser> cunchu = userService.getCunchu(params);
      System.out.println(params.get("field1")+"======");
Service
   //测试存储过程,用于验证返回值是否可以接收到
    List<SysCunChuUser> getCunchu(Map<String, Object> params);
ServiceImpl
    //测试存储过程,用于验证返回值是否可以接收到
    @Override
    public List<SysCunChuUser> getCunchu(Map<String, Object> params){
        return userMapper.getCunchu(params);
    };
Mapper
    //测试存储过程,用于验证返回值是否可以接收到
    @Select("declare @a varchar(2000) " +
            "EXEC sp_Rpt_Branch " +
            "#{operid,mode=IN,jdbcType=INTEGER},#{userid,mode=IN,jdbcType=INTEGER},#{field1,mode=OUT,jdbcType=VARCHAR} " +
            "select @a ")
    @Options(statementType = StatementType.CALLABLE)
    List<SysCunChuUser> getCunchu(Map<String, Object> params);

此存储过程需要3个参数,返回一个表加上一个返回值,那我们将operid,userid这两个传参和field1接收参都封装进HashMap,指定泛型为SysCunChuUser,得到的结果为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值