Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fügen Sie allen MySQL Select Queries in einem einzigen Schuss eine Spalte hinzu

Erstellen Sie einen benutzerdefinierten DB-Interceptor

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);
  }

}

Konfigurieren Sie in der Spring Context-Datei den Interceptor für die Session-Factory:

<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>

Stellen Sie sicher, dass der benutzerdefinierte DB-Interceptor keine zyklische Abhängigkeit von der sessionFactory hat. Mit dem oben Gesagten werden alle Abfragen, die durch die Session-Factory ausgelöst werden, abgefangen, modifiziert und dann an onPrepareStatement übergeben Methode.