mybatis interceptor 處理查詢參數(shù)及查詢結(jié)果的實例代碼
下面給大家介紹mybatis interceptor 處理查詢參數(shù)及查詢結(jié)果,具體代碼如下所示:
/** * Created by windwant on 2017/1/12. */ @Intercepts({ @Signature(type=Executor.class,method="update",args={MappedStatement.class,Object.class}), @Signature(type=Executor.class,method="query",args={MappedStatement.class,Object.class,RowBounds.class,ResultHandler.class}) }) public class EncryptInterceptor implements Interceptor { public static final Logger logger = LoggerFactory.getLogger(EncryptInterceptor.class); @Override public Object intercept(Invocation invocation) throws Throwable { dealParameter(invocation); Object returnValue = invocation.proceed(); dealReturnValue(returnValue); return returnValue; } //查詢參數(shù)加密處理 private void dealParameter(Invocation invocation) { MappedStatement statement = (MappedStatement) invocation.getArgs()[0]; String mapperl = ConfigUtils.get("mybaits.mapper.path"); String methodName = statement.getId().substring(statement.getId().indexOf(mapperl) + mapperl.length() + 1); if (methodName.startsWith("UserBaseMapper")){ if(methodName.equals("UserBaseMapper.updateDriver")){ ((Driver) invocation.getArgs()[1]).encrypt(); } } logger.info("Mybatis Encrypt parameters Interceptor, method: {}, args: {}", methodName, invocation.getArgs()[1]); } //查詢結(jié)果解密處理 private void dealReturnValue(Object returnValue){ if(returnValue instanceof ArrayList<?>){ List<?> list = (ArrayList<?>)returnValue; for(Object val: list){ if(val instanceof Passenger){/// //TODO } logger.info("Mybatis Decrypt result Interceptor, result object: {}", ToStringBuilder.reflectionToString(val)); } } } @Override public Object plugin(Object target) { return Plugin.wrap(target, this); } @Override public void setProperties(Properties properties) { } }
添加配置:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="typeAliasesPackage" value="com.xx.model"/> <property name="dataSource" ref="dataSource"/> <!-- 自動掃描mapping.xml文件 --> <property name="mapperLocations" value="classpath*:mybatis/*.xml"></property> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageHelper"> <property name="properties"> <value>dialect=hsqldb</value> </property> </bean> <bean class="com.xx.interceptor.EncryptInterceptor"> <property name="properties"> <value>property-key=property-value</value> </property> </bean> </array> </property> </bean>
以上所述是小編給大家介紹的mybatis interceptor 處理查詢參數(shù)及查詢結(jié)果的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Lombok為啥這么牛逼?SpringBoot和IDEA官方都要支持它
Lombok是一款Java代碼功能增強庫,在Github上已有9.8k+Star。這篇文章主要介紹了Lombok為啥這么牛逼?SpringBoot和IDEA官方都要支持它,需要的朋友可以參考下2020-12-12SpringBoot開發(fā)技巧之使用AOP記錄日志示例解析
這篇文章主要為大家介紹了SpringBoot開發(fā)技巧之如何利用AOP記錄日志的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10java實現(xiàn)table添加右鍵點擊事件監(jiān)聽操作示例
這篇文章主要介紹了java實現(xiàn)table添加右鍵點擊事件監(jiān)聽操作,結(jié)合實例形式分析了Java添加及使用事件監(jiān)聽相關(guān)操作技巧,需要的朋友可以參考下2018-07-07詳解Spring注解@Autowired的實現(xiàn)原理和使用方法
在使用Spring開發(fā)的時候,配置的方式主要有兩種,一種是xml的方式,另外一種是 java config的方式,在使用的過程中,我們使用最多的注解應(yīng)該就是@Autowired注解了,所以本文就給大家講講@Autowired注解是如何使用和實現(xiàn)的,需要的朋友可以參考下2023-07-07深入研究spring boot集成kafka之spring-kafka底層原理
這篇文章主要深入研究了spring boot集成kafka如何實現(xiàn)spring-kafka的底層原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-02-02Spring AOP實現(xiàn)Redis緩存數(shù)據(jù)庫查詢源碼
這篇文章主要介紹了Spring AOP實現(xiàn)Redis緩存數(shù)據(jù)庫查詢的相關(guān)內(nèi)容,源碼部分還是不錯的,需要的朋友可以參考下。2017-09-09