sql >> Database teknologi >  >> RDS >> Oracle

Ringer til Oracles lagrede procedurer med MyBatis

Resultatkortet ser sådan ud:

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

I din select-sætning skal du ændre parametertypen til 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>

Din mapper-grænseflade ser sådan ud, det ser ud til, at du i øjeblikket kalder dette DAO. Den måde, jeg har gjort det på tidligere, er at lave en mapper-grænseflade, der bliver injiceret i DAO'en, og DAO'en er det, der kalder metoderne på mapperen. Her er et eksempel på en kortlægningsgrænseflade:

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

Denne mapper-klasse ville derefter blive injiceret i en DAO-klasse og foretage opkaldet sådan her:

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. Tildel summen af ​​kolonne til én dato i en anden kolonne, hvis kriterierne er opfyldt

  2. PostgreSQL kontrollerer en tidligere posts element

  3. Indsættelse af mm/dd/åååå formatdatoer i MySQL

  4. MySQL-fejl:Værdi uden for rækkevidde for kolonne 'beløb' i række 1