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调用了。
mybatis mysql 存储过程_Mysql 存储过程+Mybatis调用实现插入操作例子 | 学步园相关推荐
- MySQL存储过程 — 解析 XML 数据并实现插入操作
MySQL存储过程 - 解析 XML 数据并实现插入操作 一.概述: 最近在做项目的过程中,需要利用MySQL存储过程 解析 XML数据并进行插入操作,因此就学习了下.MySQL 解析 XML 的思路 ...
- wpf mysql存储过程_MySQL存储过程的创建及调用
# SQL语句:先编译后执行 存储过程(Stored Procedure): 一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需 ...
- 什么是mysql存储过程_mysql 存储过程
存储过程 1.什么是存储过程 一组可编程函数,是为了满足特定功能的SQL语句集 存储过程就是具有名字的一段代码,用来完成个特定的功能 创建的存储过程保存在数据库的数据字典中 2.为什么要用存储过程 ...
- mysql中如何运行存储过程_MySQL存储过程如何操作
mysql在5.1之后增加了存储过程的功能, 存储过程运行在mysql内部,语句都已经编译好了,速度比sql更快. 存储过程与mysql相当于shell和linux系统.如果你是程序员的话,那我告诉你 ...
- thinkphp mysql存储过程_MySql存储过程的创建与使用及在thinkphp中如何调用笔记
学习sql的存储过程,笔记总结如下: MySQL默认将分号,即";"作为语句的分隔符.如果是这样的话,则一个存储过程将很难正常创建,因为它的BEGIN和END之间可以是任意数量的S ...
- mysql在触发器中调用存储过程_mysql 触发器中调用存储过程
想要在MYSQL的触发器中调用存储过程,但是IDE提示: 0A000 Not allowed to return a result set from a trigger 触发器代码如下: DELIMI ...
- mvc调用mysql存储过程_mysql – 存储过程不在MVC5中返回值
我正在使用db方法在MVC5中使用Entity Framework.我使用Mysql作为数据库.我创建了一个过程,当Mysql中的Call Procedure它符合我的期望时.但是当我在MVC中使用过 ...
- mysql 分号 存储过程_MySql 存储过程
自动增长列.字段值唯一性约束 create table aa( id int auto_increment primary key, sname varchar(32) unique ); inser ...
- 什么场景使用mysql的存储过程_mysql存储过程的使用
直入正题吧:首先创建一张 students 表 create tablestudents( idint primary keyauto_increment, ageint, namevarchar(2 ...
最新文章
- Nature:植物叶际微生物组稳态维持机制
- 我是如何学习写一个操作系统(四):操作系统之系统调用
- 怎么解决input中readonly属性的iOS一直存在光标问题
- stability condition in queueing system
- JAVA开发工具下载
- JS格式化数字保留两位小数点—toFixed()
- 7个有用的JavaScript技巧
- 【344天】我爱刷题系列103(2018.01.15)
- 2021 年最佳开源软件榜单出炉
- 流媒体管理服务器显示不可用,部署国标流媒体服务器成功后无法播放视频问题步骤排查...
- ISBN(国际标准书号)的校验
- android 游戏循环 帧速,适用于Android的Firemonkey游戏循环
- 云效,云原生时代一站式研发平台
- c语言程序设计第五版课后习题答案谭浩强第八章课后题
- 认证资料大全(八)------ SUN认证列表
- K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转
- 再见,米哈游!原神社区防f12控制台调试代码全解(年轻人不讲武德)
- 究极聚合,效率翻倍——CSDN浏览器助手体验测评
- 计算机学生如何找到第一份实习?
- 信息系统管理师能做什么工作_什么是管理工作?