Last ID, iBATIS y MySql
Adicto como soy a las claves primarias auto-incrementales en MySql me perseguía el problema de no saber cuál era el ID con el que el último registro había sido insertado.
Esto me obliga a hacer indecorosos malabarismos para conseguirlo: sincronizar el método y solicitar el último ID insertado justo después de la inserción, solicitar la ID del registro por algún otro campo de clave única…
Hoy me dá por googlear un poco y me encuentro con una joyita del 2005 entre los archivos de una lista de correo.
Aquí está la solución para que la propia llamada al ‘insert’ te retorne el ID creado:
Si por ejemplo tenemos esta sentencia ‘insert’ en nuestro fichero de iBATIS:
<insert id="insertSentence" > insert into MY_TABLE ( FIELD_1, FIELD_2 ) values ( #value1#, #value2# ) </insert>
Hay que modificarla de esta manera:
<insert id="insertSentence" > insert into MY_TABLE ( FIELD_1, FIELD_2 ) values ( #value1#, #value2# ) <selectKey resultClass="long" keyProperty="ID" > select LAST_INSERT_ID() </selectKey> </insert>
Y el ID podrás recogerlo desde la llamada al mapeador de iBATIS:
Long key = (Long) sqlMap.insert( "insertSentence" );
Ahora soy un poquitín más feliz… espero que tú también.
Noviembre 28th, 2007 at 8:20 pm
Sí señor, yo también soy un poquito más feliz.
Sólo un comentario: el valor de la keyProperty=”ID”, debe coincidir con el nombre del atributo correspondiente a la columna auto-incremental del objeto que se inserta. Lo digo por copy-pastes apresurados como el que he hecho yo.
Muchas gracias.
Noviembre 28th, 2007 at 8:30 pm
Gracias por la aclaración Rubén ;)
Abril 23rd, 2008 at 11:32 am
me ha sido muy útil. gracias!
Junio 15th, 2009 at 1:53 am
si, efectivamente muy util, gracias!
Una pregunta que no tiene mucho que ver con llaves auto-incrementales, tu me podrias aconsejar un poquito para manejar con seguridad mis archivos de configuracion (los xml) y que, en caso de un ataque hackeril no puedan leer el archivo que contiene datos tan preciados como mi servidor de base de datos, contraseña y demás? GRacias nuevamenteeeee
Septiembre 18th, 2011 at 2:15 pm
[…] y al principio estaba receloso, porque veía que tenía que bajar siempre hasta la SQL. Ahora lo usan en su empresa y cuando le pregunté por ello me dijo: Tronco… he sufrido mucho con Hibernate […]
Junio 22nd, 2014 at 8:49 pm
Je terminerai de lire ça ce soir
Julio 25th, 2014 at 8:30 pm
Un post vraiment rempli Ԁe maǥnifiqueѕ conseils
Diciembre 13th, 2015 at 5:37 am
Your style is really unique in comparison to other folks I’ve read stuff from.
Many thanks for posting when you have the opportunity, Guess I’ll just bookmark this web site.
Septiembre 29th, 2016 at 1:05 am
always i employed to read smaller articles or reviews
which at the same time clear their motive, and that is also
happening with this particular article that i am reading at this particular
place.
My web site … HomerGGovero