首页 > 开发 > Java > 正文

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

2024-07-13 10:03:28
字体:
来源:转载
供稿:网友

下面给大家介绍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 处理查询参数及查询结果的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对VeVb武林网网站的支持!


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表