mybatisinterceptor 검색 매개 변수 및 검색 결과의 실례 코드 처리

다음은 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>
상기에서 말한 것은 여러분께 소개해 드린 mybatisinterceptor가 조회 매개 변수와 조회 결과를 처리하는 실례 코드입니다. 여러분께 도움이 되기를 바랍니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기