Bootstrap

spring boot JAP调用mysql存储过程

    因为要对接项目的mysql数据库,部分语句要使用到mysql的存储过程,保证调用的一致性。

    在网上查找了好多种方式,都很复杂,而且我试验了好多种,都没有成功。最后使用了

EntityManager的createNamedStoredProcedureQuery调用,成功执行mysql的存储过程。

      现将方式记录,以便后面查阅。

1.mysql的存储过程很复杂,主要是用户注册,需要向两个表中插入数据

CREATE DEFINER=`demodb`@`%` PROCEDURE `user_register`(
            in_password VARCHAR(50),
            in_device_os VARCHAR(20),
            in_device_os_version VARCHAR(30),
            in_device_support_tele INT,
            in_device_manufactory VARCHAR(40),
            in_device_model VARCHAR(30),
            in_app_mobile_version VARCHAR(20),
            in_gmail VARCHAR(30),
            in_verified TINYINT,
            in_cc VARCHAR(20),
            in_account VARCHAR(128),
            in_mn VARCHAR(20),
            OUT ret_passwd VARCHAR(50),
            OUT ret_userid VARCHAR(30),
            OUT ret_flag INT)
BEGIN
DECLARE var_get_userid VARCHAR(30);
DECLARE start_pos INT;
DECLARE var_mn VARCHAR(30);
DECLARE EXIT HANDLER FOR SQLEXCEPTION 
BEGIN
SET ret_flag=-1;
ROLLBACK;
END;
START TRANSACTION;     
SET @dt = NOW();
SET @dtunix=UNIX_TIMESTAMP(@dt);
SET @sid = REPLACE(UUID(),'-','');
SET start_pos=CEIL(RAND()*1000);
SELECT id INTO var_get_userid
FROM useridtable
LIMIT start_pos,1;
DELETE FROM useridtable 
WHERE id=var_get_userid;
IF in_mn='' THEN
   SET var_mn=CON
;