Saltar al contenido

Spring: cómo usar BeanPropertyRowMapper sin hacer coincidir los nombres de las columnas

Después de de nuestra prolongada compilación de información hemos podido resolver esta aprieto que tienen muchos usuarios. Te dejamos la respuesta y nuestro deseo es resultarte de mucha apoyo.

Solución:

Vi algunas publicaciones sobre el uso de alias en consultas

Este es en realidad un enfoque sugerido en JavaDocs:

Para facilitar el mapeo entre columnas y campos que no tienen nombres coincidentes, intente usar alias de columna en la instrucción SQL como “seleccione fname como nombre del cliente”.

Desde: BeanPropertyRowMapper.

imposible hacer un SELECT *

Por favor, no use SELECT *. Esto lo hace vulnerable a cualquier cambio en el esquema de la base de datos, incluidos los completamente compatibles con versiones anteriores, como agregar o reorganizar columnas.

¿No hay ninguna anotación que se pueda usar con BeanPropertyRowMapper como @Column de JPA?

Sí, se llama jpa, hibernate y tal vez ibatis. En serio, usa alias o implementa los tuyos propios RowMapperSpring no es un orm con todas las funciones.

Puede anular el BeanPropertyRowMapper.underscoreNamey obtenga el nombre de la anotación Columna para mapear el campo con @Column(name = "EXAMPLE_KEY") en el PropertyDescriptor (enlace getter/setter).

@Slf4j
public class ColumnRowMapper extends BeanPropertyRowMapper 

  private ColumnRowMapper(final Class mappedClass)
  
    super(mappedClass);
  

  @Override
  protected String underscoreName(final String name)
  

  /**
   * New instance.
   *
   * @param  the generic type
   * @param mappedClass the mapped class
   * @return the bean property row mapper
   */
  public static  BeanPropertyRowMapper newInstance(final Class mappedClass)
  
    return new ColumnRowMapper<>(mappedClass);
  

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *