sql >> Base de Datos >  >> RDS >> Mysql

Agregue una columna a todas las consultas de selección de MySQL en una sola toma

Crear un interceptor de base de datos personalizado

package com.felix.dao.interceptor;
import org.hibernate.EmptyInterceptor;

public class CustomDBInterceptor extends EmptyInterceptor {

  @Override
  public String onPrepareStatement(String sql) {
    String commentStr = "/*Comment*/"
    return super.onPrepareStatement(commentStr+sql);
  }

}

En el archivo Spring Context, configure el Interceptor para la fábrica de sesiones:

<bean id="customDBInterceptor" class="com.felix.dao.interceptor.CustomDBInterceptor"/>
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="datasource" />
    <property name="entityInterceptor">
        <ref bean="customDBInterceptor"/>
    </property>
    ...
</bean>

Asegúrese de que Custom DB Interceptor no tenga una dependencia cíclica en sessionFactory. Con lo anterior, todas las consultas disparadas a través de session factory, se interceptan, modifican y luego pasan a onPrepareStatement método.