Mybatis注解方式调用有入参和出参的存储过程

项目中有使用mybatis注解方式调存储过程.主要的坑点在接收返回值(list).

1:ServerImpl里面

//获取bom信息
Map<String,Object> params =new HashMap<String,Object>(3);
params.put("PN", PN);
params.put("projectCode", projectCode);
//1:试试直接接受返回值.结果是空的.
List<CtRunBomInfo> bomList = fileInfoByEdiMapper.queryBom(params);
System.out.println("bomList.size():"+bomList.size());
//1:试试map的第三个值接收,正确.
List<CtRunBomInfo> bomInfo = (List<CtRunBomInfo>) params.get("bomInfo");
System.out.println("bomInfo.size():"+bomInfo.size());

2:实体类CtRunBomInfo,省略set,get

    private String maticPN;
	private String ctRunBomSysId;
	private String ctRunSysId;
	private String pn;
	private String pnDesc;
	private String projectCode;
	private String makerCode;
	private String makerName;
	private String makerPn;
	private String status;
	private BigDecimal weight;
	private String uom;
	private BigDecimal qvlId;
	private BigDecimal gpId;
	private BigDecimal profileId;
	private Date creationTime;
	private Date updateTime;

3:Mapper

mode=OUT这一行的bomInfo就对应serviceImpl层的map.get("bomInfo")

    /**
	 * 根据输入的Pn和截取的projectCode作为参数获取零件Bom信息
	 * @param pN
	 * @param projectCode
	 * @return
	 */
	@Select({"call eGP_RPA_PKG.GET_OPEN_TASK("
			+ "#{PN,mode=IN,jdbcType=VARCHAR},"
			+ "#{projectCode,mode=IN,jdbcType=VARCHAR},"
			+ "#{bomInfo,mode=OUT,jdbcType =CURSOR ,javaType=ResultSet,resultMap=bomInfo})"})
	@Results(id = "bomInfo",
		value = {
				@Result(column = "TOP_PARENT_PN", property = "maticPN"),
				@Result(column = "MITAC_PART_NO", property = "pn"),
				@Result(column = "MITAC_PART_DESC", property = "pnDesc"),
				@Result(column = "MAKER_CODE", property = "makerCode"),
				@Result(column = "MAKER_NAME", property = "makerName"),
				@Result(column = "MAKER_PN", property = "makerPn"),
				@Result(column = "WEIGHT", property = "weight"),
				@Result(column = "UOM", property = "uom"),
				@Result(column = "QVL_ID", property = "qvlId"),
				@Result(column = "GPID", property = "gpId"),
				@Result(column = "PROFILE_ID", property = "profileId")
		})
	@Options(statementType=StatementType.CALLABLE)
	public List<CtRunBomInfo> queryBom(Map<String,Object> params);

注意:@Options(statementType=StatementType.CALLABLE)

这个注解加上代表执行存储过程.不加会报丢失参数错误

 参考的:

https://blog.csdn.net/feng_tai_jun/article/details/80681224

https://ask.csdn.net/questions/719349

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kone.wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值