Mybatis调用存储过程

1
2
3
4
5
6
7
8
9
DROP PROCEDURE IF EXISTS `getBalanceCoinByCustomerId`;
delimiter ;;
CREATE PROCEDURE `db_b2c_local`.`getBalanceCoinByCustomerId`(IN `customer_id` int(10), OUT `mallCoinNow` decimal(10,2))
COMMENT '获得用户积分的实时总余额'
BEGIN
...省略
END
;;
delimiter ;

将上述存储过程调用后在该软件函数那一栏中可以看到,点击运行输入参数可以测试该存储过程

或者在新建查询中打入CALL 存储函数()即可验证存储过程的准确性

Mapper

1
BigDecimal getBalanceCoinByCustomerId(Map<String, Object> paramMap);

Mybatis调用存储过程

1
2
3
<select id="getBalanceCoinByCustomerId" parameterType="map" statementType="CALLABLE" resultType="decimal">
{CALL getBalanceCoinByCustomerId(#{customer_id,mode=IN,jdbcType=INTEGER},#{mallCoinNow,mode=OUT,jdbcType=DECIMAL})}
</select>

需要注意的地方

  • Mybatis调用存储过程需要加上花括号
  • 调用函数名和调用参数一定要和sql中完全一样
  • statementType必须设置为CALLABLE
  • 参数需要设置入参mode类型(IN、OUT、INOUT)和jdbcType
赏个🍗吧
0%