sql >> Databáze >  >> RDS >> Oracle

Volání uložených procedur Oracle pomocí MyBatis

Mapa výsledků vypadá takto:

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

V příkazu select změňte typ parametru na 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>

Vaše rozhraní mapovače vypadá takto, vypadá to, že to aktuálně nazýváte DAO. Způsob, jakým jsem to dělal v minulosti, je vytvořit rozhraní mapovače, které se vloží do DAO a DAO je to, co volá metody na mapovači. Zde je příklad rozhraní mapovače:

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

Tato třída mapovače by se pak vložila do třídy DAO a provedla volání takto:

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. Zdá se, že PHP bindParam nefunguje s parametrem PARAM_INT out

  2. Porovnání Percona XtraBackup a MySQL Enterprise Backup:Část první

  3. PGError:ERROR:vztah delayed_jobs neexistuje (Postgresql, rails 3.04, delayed_job error)

  4. Umožněte hibernaci zpětně uvozovat všechny názvy tabulek / sloupců