Heim  >  Artikel  >  Datenbank  >  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?

王林
王林nach vorne
2023-05-27 09:01:302018Durchsuche

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 ;

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);

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>

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

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>

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen