mybatis interceptor 处理查询参数及查询结果

 

拦截器:拦截update,query方法,处理查询参数及返回结果。

/**
 * 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) {

    }
}

添加xml配置:

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

 

转载于:https://www.cnblogs.com/niejunlei/p/6346610.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值