mybatis interceptor 处理查询参数及查询结果的实例代码

作者:简简单单 2017-03-06
 代码如下 复制代码

/**

 * 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})

})

publicclassEncryptInterceptorimplementsInterceptor {

  publicstaticfinalLogger logger = LoggerFactory.getLogger(EncryptInterceptor.class);

  @Override

  publicObject intercept(Invocation invocation)throwsThrowable {

    dealParameter(invocation);

    Object returnValue = invocation.proceed();

    dealReturnValue(returnValue);

    returnreturnValue;

  }

  //查询参数加密处理

  privatevoiddealParameter(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]);

  }

  //查询结果解密处理

  privatevoiddealReturnValue(Object returnValue){

    if(returnValueinstanceofArrayList){

      List list = (ArrayList)returnValue;

      for(Object val: list){

        if(valinstanceofPassenger){///

          //TODO

        }

        logger.info("Mybatis Decrypt result Interceptor, result object: {}", ToStringBuilder.reflectionToString(val));

      }

    }

  }

  @Override

  publicObject plugin(Object target) {

    returnPlugin.wrap(target,this);

  }

  @Override

  publicvoidsetProperties(Properties properties) {

  }

}

添加配置:

 代码如下 复制代码

       

       

       

       

       

           

              

                  

                     dialect=hsqldb

                  

              

              

                  

                     property-key=property-value

                  

              

           

       

    

相关文章

精彩推荐