Thinking on hiring me?

Please read

Fernando Guillén

a Freelance Web Developer

cabecera decorativa

software development as an artistic expression

Archive for the ‘ibatis’ Category

Martes, Julio 24th, 2007

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.

a Freelance Web Developer is proudly powered by WordPress
Entries (RSS) and Comments (RSS).

Creative Commons License
Fernando Guillen's blog by Fernando Guillen is licensed under a Creative Commons Attribution-NoDerivs 3.0 Unported License.