Heim > Datenbank > MySQL-Tutorial > Wie ruft Mybatis die gespeicherte MySQL-Prozedur auf und erhält den Rückgabewert?

Wie ruft Mybatis die gespeicherte MySQL-Prozedur auf und erhält den Rückgabewert?

王林
Freigeben: 2023-05-27 09:01:30
nach vorne
2074 Leute haben es durchsucht

mybatis ruft die gespeicherte MySQL-Prozedur auf und erhält den Rückgabewert

1. MySQL erstellt die gespeicherte Prozedur

#结束符号默认;, delimiter $$语句表示结束符号变更为$$
delimiter $$
CREATE PROCEDURE `demo`(IN inStr VARCHAR(100), out ourStr VARCHAR(4000))
BEGIN

SET ourStr = '01';
if (inStr == '02') then
    set ourStr = '02';
end if;

END$$
#结束符号修改
delimiter ;
Nach dem Login kopieren

2. Mybatis ruft die (1) Annotationsmethode auf Prozedur und stößt auf eine Rückgabe. Die Falle eines Nullwerts

Mybatis gibt einen Nullwert zurück, wenn eine gespeicherte Prozedur aufgerufen wird

Nur eine einfache gespeicherte Prozedur

// key1和key2都是参数map中的key
// key1是需要传入存储过程的值
// key2是用于接收存储过程返回的值,跟获取自增主键类似
@Select("call demo('${key1}', #{key2, mode=OUT, jdbcType=VARCHAR})")
@Options(statementType = StatementType.CALLABLE)
String getDemoValue(Map<String, Object> map);
Nach dem Login kopieren

Und dann ist in der Mybatis Mapper-Konfigurationsdatei

 <select id="getDemoValue" resultType="java.lang.String" parameterType="java.util.Map" statementType="CALLABLE">
     call demo(&#39;${key1}&#39;, #{key2, mode=OUT, jdbcType=VARCHAR})
 </select>
Nach dem Login kopieren

der userName-Wert null. Warum ist das so? Die Zuordnung erfolgt in der Datei „mapper.xml“ und das unten in der gespeicherten Prozedur rot markierte Attribut „Benutzername“ wird nicht automatisch dem Wert „Benutzername“ zugeordnet. Daher muss der Aufruf des Werts „Benutzername“ null zurückgeben.

BEGIN
   #SELECT COUNT(*) scount FROM test_user t WHERE t.user_sex=sex;
   SELECT user_name userName FROM test_user t WHERE t.user_sex=sex;
END
Nach dem Login kopieren

Wie geht man also mit diesem Problem um? Das heißt, das INTO-Schlüsselwort hinzuzufügen

 <!--存储过程  输入参数用Map -->
  <select id="queryCountBySexWithProcedure" statementType="CALLABLE" parameterType="java.util.Map" resultType="java.util.HashMap">
      {
           CALL queryCountBySexWithProcedure(
              #{sex,jdbcType=VARCHAR,mode=IN},
              #{userName,jdbcType=VARCHAR,mode=OUT}
           )
    }
  </select>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie ruft Mybatis die gespeicherte MySQL-Prozedur auf und erhält den Rückgabewert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage