sql >> Database >  >> RDS >> Oracle

Opgeslagen Oracle-procedures aanroepen met MyBatis

Resultatenkaart ziet er als volgt uit:

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

Wijzig in uw select-statement het parametertype 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>

Je mapper-interface ziet er zo uit, het lijkt erop dat je dit momenteel de DAO noemt. De manier waarop ik het in het verleden heb gedaan, is om een ​​mapper-interface te maken die in de DAO wordt geïnjecteerd en de DAO is wat de methoden op de mapper aanroept. Hier is een voorbeeld van een mapper-interface:

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

Die mapper-klasse zou dan in een DAO-klasse worden geïnjecteerd en de aanroep als volgt doen:

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


  1. zoeken op relevantie in meerdere gerelateerde tabellen

  2. ontwerpdatabase met betrekking tot tijdattribuut

  3. Visual Studio 2015:SQL-gegevensbron:kan schema niet ophalen. Zorg ervoor dat de eigenschappen ConnectionString en SelectCommand geldig zijn

  4. Ruimte berekenen en besparen in PostgreSQL