1. 程式人生 > >spring mvc 配置 mybatis sql攔截器

spring mvc 配置 mybatis sql攔截器

mybatis


直接上代碼:

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

技術分享



如果要保存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;

}


spring mvc 配置 mybatis sql攔截器