spring mvc 配置 mybatis sql攔截器


直接上代碼:

mybatis配置中 添加  <property name="plugins"> 如下:


  <bean id="sqlSessionFactory" class="com.hotent.core.mybatis.SqlSessionFactoryFactoryBean">

        <property name="configLocation" value="classpath:/conf/configuration.xml"/>

        <property name="mapperLocations" >

        <list>

        <value>classpath:/com/*/maper/*.map.xml</value>

        </list>

        </property>

        <property name="dataSource" ref="dataSource"/>

         <property name="plugins">  

            <ref bean="paginationInterceptor"/>  

        </property>  

    </bean>

    <!-- MyBatis sql攔截器-->  

    <bean id="paginationInterceptor" class="com.mybatis.interceptor.PageInterceptor">  

        <property name="dialect" value="oracle"/>   

        <property name="pageSqlId" value=".*"/>  

    </bean>   


有的SqlSessionFactoryFactoryBean類中沒有plugins屬性

(private Interceptor[] plugins;生成setter方法 ),

定義屬性後將插件添加到Configuration conf = sqlSessionFactory.getConfiguration();如下


if (null!=this.plugins) {

     for (Interceptor plugin : this.plugins) {

     conf.addInterceptor(plugin);

       if (this.logger.isDebugEnabled()) {

         this.logger.debug("Registered plugin: '" + plugin + "'");

       }

     }

}


關於攔截類 PageInterceptor

wKioL1lnF5nR_YLIAAGXDV65tlI818.png-wh_50



如果要保存sql以及sql對應的值問題:


sql數據問題:sql中有特殊符號是無法保存到數據庫中的,通過url編碼後保存到數據庫,如果要查看時再反編碼即可

sql對應值的問題:1.對象轉爲json數據,2,直接獲取


public static String getStringParame(Object obj){

 JSONObject json = JSONObject.fromObject(obj);//將java對象轉換爲json對象

 String str = json.toString();//將json對象轉換爲字符串

 //不是json直接返回字符串

 if(str.equals("") || str.equals("{}")){

 str = obj.toString();

 }

 return str;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章