Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Aufrufen von gespeicherten Oracle-Prozeduren mit MyBatis

Die Ergebniskarte sieht folgendermaßen aus:

<resultMap id="UserResult" type="User">
    <id property="userId" column="userId"/>
    <result property="firstName" column="firstName"/>
    <result property="lastName" column="lastName"/>     
</resultMap>

Ändern Sie in Ihrer Select-Anweisung den Parametertyp in java.util.Map.

<select id="getUsers" statementType="CALLABLE" parameterType="java.util.Map"> 
    {call GetUsers(#{users, jdbcType=CURSOR, javaType=java.sql.ResultSet, mode=OUT, resultMap=UserResult})} 
</select>

Ihre Mapper-Oberfläche sieht so aus, es sieht so aus, als würden Sie dies derzeit das DAO nennen. In der Vergangenheit habe ich es so gemacht, dass ich eine Mapper-Schnittstelle erstellt habe, die in das DAO injiziert wird, und das DAO ruft die Methoden auf dem Mapper auf. Hier ist ein Beispiel einer Mapper-Schnittstelle:

public interface UserMapper {
    public Object getUsers(Map<String, Object> params);
}

Diese Mapper-Klasse würde dann in eine DAO-Klasse injiziert und den Aufruf wie folgt ausführen:

public List<User> getUsers() {
    Map<String, Object> params = new HashMap<String, Object>(); 
    ResultSet rs = null;
    params.put("users", rs);
    userMapper.getUsers(params);
    return ((ArrayList<User>)params.get("users"));
}