mybatis mysql 存储过程_Mysql 存储过程+Mybatis调用实现插入操作例子 | 学步园

一、

       简介:网上关于存储过程的使用有很多的例子,但大多实现的功能比较简单,由于本人对SQL语句还不是很熟悉,更别说存储过程了,所以在实现该例子的时候遇到了很多问题,现在拿给大家来分享。

二、

     在本例子中mysql +spring +Mybatis 环境已经搭建好了,下面的例子不是完整的代码,但是遇到的问题和解决办法都会给大家详细描述出来,希望在大家遇到问题是能给大家一些灵感。

    问题介绍:1、涉及三个表的操作b1,b2,b3,根据查询条件从b1、b2中查出结果并  批量 插入到b3中;

                         2、查询条件从前台获得,包含多条插入数据的查询条件,由于mysql存储过程不支持数组和链表,所以要用到字符串的拆分,又因为是多条数据,所以要批量插入;

三、

      1、在Mybatis中使用:

 

{

call entitlement_op(#{jurisdictionId:INTEGER},#{firmId:INTEGER},#{ids:VARCHAR},",")

}

2、存储过程 :

entitlement_op

参数:IN jurisdictionId int,IN firmId int,IN entitlementIds VARCHAR(1000),IN split_str VARCHAR(5)

BEGIN

declare cnt int default 0;

declare i int default 0;

set cnt = func_split_TotalLength(entitlementIds ,split_str );

WHILE i

DO

SET i=i+1;

INSERT

INTO loa_entitlement (

FIRM_ID,

JURISDICTION_ID,

ENTITLEMENT_NAME,

ENTITLEMENT_DESC,

IS_SHARABLE,

IS_PAID_LEAVE,

COLOR,

PATTERN,

LIBRARY,

CREATOR,

CREATE_TIME

)

SELECT

firmId,#来自参数中,而不是查询结果中

j.JURISDICTION_ID,

s.ENTITLEMENT_NAME,

s.ENTITLEMENT_DESC,

s.IS_SHARABLE,

s.IS_PAID_LEAVE,

s.COLOR,

s.PATTERN,

s.LIBRARY,

s.CREATOR,

s.CREATE_TIME

FROM jurisdiction j,sas_loa_entitlement s

WHERE

s.jurisdiction_id = j.jurisdiction_id

AND

j.jurisdiction_id=jurisdictionId

AND

s.entitlement_id =func_split(entitlementIds ,split_str,i);

END WHILE;

END

存储过程中用到的方法:

1、func_split  参数:(f_string varchar(1000),f_delimiter varchar(5),f_order int)

用来分割字符串,实现存储过程传递多条数据的功能(摘自网络)

BEGIN

declare result varchar(255) default '';

set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));

return result;

END

2、func_split_TotalLength  参数:(f_string varchar(1000),f_delimiter varchar(5))

判断数据总共有多少条

BEGIN

return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));

END

表结构就不给大家介绍了,本来也不是完成的实例,剩下就可以通过spring调用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值