我想傳遞Dto作爲參數,並在spring jdbc中調用存儲過程。是否可以這樣做?如何將對象列表(一個DTO)作爲單個IN參數傳遞給存儲過程
我想用dto調用存儲過程而不是參數設置?因爲我有大量的參數。
我想傳遞Dto作爲參數,並在spring jdbc中調用存儲過程。是否可以這樣做?如何將對象列表(一個DTO)作爲單個IN參數傳遞給存儲過程
我想用dto調用存儲過程而不是參數設置?因爲我有大量的參數。
目前,沒有辦法在MySQL存儲過程和函數中傳遞(或返回)對象。
但是,MySQL 5.7具有JSON函數,您可以傳遞varchar
參數並使用JSON_EXTRACT
函數提取值。
見的MySQL 5.7手冊:Functions That Search JSON Values
它如此謝謝 – smith
@史密斯歡迎您,請考慮標記我的答案爲已接受或upvote :) –
我能夠做到這一點在MySQL 5.7
如果你想變一下其中的關鍵,因爲我會做這個
SET TypeCat = CONCAT(CONVERT('$.', CHAR(50)), T)
之所以是Mysql認爲'$.'
是雙重的,所以我不得不將其作爲Char來投放它
DROP PROCEDURE IF EXISTS web.newTransaction;
CREATE PROCEDURE web.newTransaction (DATA JSON)
BEGIN
## Declare Vars ###
DECLARE done INT DEFAULT FALSE;
DECLARE TypeCat VARCHAR(255);
DECLARE s JSON;
# CURSOR 1
DECLARE T VARCHAR(255); ## Transaction
DECLARE TVT VARCHAR(255); ## TransactionValueTable
DECLARE cur1 CURSOR FOR SELECT Transaction, TransactionValueTable FROM web.TransactionType;
##### Error Handlers ####
### Error Handle for Loop ##
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=TRUE;
DECLARE exit handler for sqlexception
BEGIN
-- ERROR
SHOW ERRORS;
ROLLBACK;
END;
DECLARE exit handler for sqlwarning
BEGIN
-- WARNING
SHOW WARNINGS;
ROLLBACK;
END;
OPEN cur1;
START TRANSACTION;
-- Start our for loop
forLoop: LOOP
FETCH cur1 INTO T,TVT;
IF done = TRUE THEN
LEAVE forLoop;
END IF;
SET TypeCat = CONCAT(CONVERT('$.', CHAR(50)), T);
IF (SELECT JSON_CONTAINS_PATH(DATA, 'one', TypeCat) = 1)
THEN SET s =JSON_EXTRACT(DATA, TypeCat);
END IF;
-- End our for loop
END LOOP forLoop;
COMMIT;
SELECT s;
END;
call web.newTransaction('{"Owner": "user","Title": "Fix Function Foo" }');
https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html
好,一般可以序列的對象作爲XML或JSON和存儲過程中使用適當的方法列表來解析這個XML/JSON(extractValue和/ JSON_EXTRACT) – Alexey