一、

简介:网上关于存储过程的使用有很多的例子,但大多实现的功能比较简单,由于本人对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调用了。

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

  1. MySQL存储过程 — 解析 XML 数据并实现插入操作

    MySQL存储过程 - 解析 XML 数据并实现插入操作 一.概述: 最近在做项目的过程中,需要利用MySQL存储过程 解析 XML数据并进行插入操作,因此就学习了下.MySQL 解析 XML 的思路 ...

  2. wpf mysql存储过程_MySQL存储过程的创建及调用

    # SQL语句:先编译后执行 存储过程(Stored Procedure): 一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需 ...

  3. 什么是mysql存储过程_mysql 存储过程

    存储过程 1.什么是存储过程 一组可编程函数,是为了满足特定功能的SQL语句集 存储过程就是具有名字的一段代码,用来完成个特定的功能 创建的存储过程保存在数据库的数据字典中 ​ 2.为什么要用存储过程 ...

  4. mysql中如何运行存储过程_MySQL存储过程如何操作

    mysql在5.1之后增加了存储过程的功能, 存储过程运行在mysql内部,语句都已经编译好了,速度比sql更快. 存储过程与mysql相当于shell和linux系统.如果你是程序员的话,那我告诉你 ...

  5. thinkphp mysql存储过程_MySql存储过程的创建与使用及在thinkphp中如何调用笔记

    学习sql的存储过程,笔记总结如下: MySQL默认将分号,即";"作为语句的分隔符.如果是这样的话,则一个存储过程将很难正常创建,因为它的BEGIN和END之间可以是任意数量的S ...

  6. mysql在触发器中调用存储过程_mysql 触发器中调用存储过程

    想要在MYSQL的触发器中调用存储过程,但是IDE提示: 0A000 Not allowed to return a result set from a trigger 触发器代码如下: DELIMI ...

  7. mvc调用mysql存储过程_mysql – 存储过程不在MVC5中返回值

    我正在使用db方法在MVC5中使用Entity Framework.我使用Mysql作为数据库.我创建了一个过程,当Mysql中的Call Procedure它符合我的期望时.但是当我在MVC中使用过 ...

  8. mysql 分号 存储过程_MySql 存储过程

    自动增长列.字段值唯一性约束 create table aa( id int auto_increment primary key, sname varchar(32) unique ); inser ...

  9. 什么场景使用mysql的存储过程_mysql存储过程的使用

    直入正题吧:首先创建一张 students 表 create tablestudents( idint primary keyauto_increment, ageint, namevarchar(2 ...

最新文章

  1. Nature:植物叶际微生物组稳态维持机制
  2. 我是如何学习写一个操作系统(四):操作系统之系统调用
  3. 怎么解决input中readonly属性的iOS一直存在光标问题
  4. stability condition in queueing system
  5. JAVA开发工具下载
  6. JS格式化数字保留两位小数点—toFixed()
  7. 7个有用的JavaScript技巧
  8. 【344天】我爱刷题系列103(2018.01.15)
  9. 2021 年最佳开源软件榜单出炉
  10. 流媒体管理服务器显示不可用,部署国标流媒体服务器成功后无法播放视频问题步骤排查...
  11. ISBN(国际标准书号)的校验
  12. android 游戏循环 帧速,适用于Android的Firemonkey游戏循环
  13. 云效,云原生时代一站式研发平台
  14. c语言程序设计第五版课后习题答案谭浩强第八章课后题
  15. 认证资料大全(八)------ SUN认证列表
  16. K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转
  17. 再见,米哈游!原神社区防f12控制台调试代码全解(年轻人不讲武德)
  18. 究极聚合,效率翻倍——CSDN浏览器助手体验测评
  19. 计算机学生如何找到第一份实习?
  20. 信息系统管理师能做什么工作_什么是管理工作?

热门文章

  1. Python构建lassocv模型并输出Rad-score公式
  2. 时间的玫瑰+但斌的投资思维
  3. 对偶问题(dual problem)
  4. 序列模式挖掘、频繁项集与频繁序列
  5. 使用String()解决utf-8字符转GB2312的问题
  6. 史上最全的长读长数据校错方法大比拼
  7. STM32按键控制led四种方法
  8. android textview参差不齐,android textView 排版显示参差不齐的解决方法
  9. 在windows10中安装 linux ubuntu 子系统
  10. OpenCV+OpenGL 双目立体视觉三维重建