Come posso ottenere la chiave generata di un inserto con MyBatis? Ho letto molte pagine su questa domanda ma sono ancora bloccato, qualcuno potrebbe aiutarmi, per favore? Questo è il mio codice:MyBatis, come ottenere la chiave generata automaticamente di un inserto? [MySql]
La tabella:
ID_ERROR long primary key
DATE timestamp
TYPE varchar
MESSAGE varchar
SOURCE varchar
Il dao:
Long returnedId = 0L;
MyMapper myMapper = this.sqlSession.getMapper(MyMapper.class);
myMapper.insertRecord(returnedId, Utils.now(), t.getClass().getName(), t.getMessage(), c.getName());
return returnedId;
Il mapper.java:
public void insertRecord(@Param("returnedId") Long returnedId, @Param("timestamp")Timestamp timestamp,@Param("type") String type,@Param("message") String message,@Param("source") String source);
Il mapper.xml
<insert id="insertRecord" parameterType="map" useGeneratedKeys="true" keyProperty="ID_ERROR">
INSERT INTO errors (
DATE,
TYPE,
MESSAGE,
SOURCE
)
VALUES (
#{timestamp},
#{type},
#{message},
#{source}
)
<selectKey resultType="long" order="AFTER" keyProperty="returnedId">
SELECT LAST_INSERT_ID() as returnedId
</selectKey>
</insert>
Cosa c'è che non va? Come posso ottenere la chiave generata di questo inserto? Grazie!
Non si dovrebbe mai usare error.id per nulla, ma il codice di errore. Hacks del genere rendono il codice sporco e illeggibile – Bostone