Thinking on hiring me?

Please read

Fernando Guillén

a Freelance Web Developer

cabecera decorativa

software development as an artistic expression

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.

4 Comments to “Last ID, iBATIS y MySql”
  1. rubén Says:

    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.

  2. fguillen Says:

    Gracias por la aclaración Rubén ;)

  3. Carlos Says:

    me ha sido muy útil. gracias!

  4. silviuxa Says:

    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

Leave a comment

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