mybatis interceptor 处理查询参数及查询结果的实例代码
更新时间:2017年01月24日 11:16:55 作者:WindWant
这篇文章主要介绍了mybatis interceptor 处理查询参数及查询结果,非常不错,具有参考借鉴价值,需要的朋友可以参考下
下面给大家介绍mybatis interceptor 处理查询参数及查询结果,具体代码如下所示:
/** * 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; } //查询参数加密处理 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]); } //查询结果解密处理 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 处理查询参数及查询结果的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关文章
Redisson 分布式延时队列 RedissonDelayedQueue 运行流程
这篇文章主要介绍了Redisson分布式延时队列 RedissonDelayedQueue运行流程,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下2022-09-09Spring Security自定义登录页面认证过程常用配置
这篇文章主要为大家介绍了Spring Security自定义登录页面认证过程常用配置示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-08-08Spring Data JPA 在 @Query 中使用投影的方法示例详解
这篇文章主要介绍了Spring Data JPA 在 @Query 中使用投影的方法,大家需要注意如果要在 @Query 中使用投影,必须要主动声明要查询的字段,并且主动写明字段的别名才行,本文通过sql代码给大家介绍的非常详细,需要的朋友参考下吧2022-07-07spring的TransactionSynchronizationAdapter事务源码解析
这篇文章主要介绍了spring的TransactionSynchronizationAdapter事务源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-09-09
最新评论