2016-06-10 3 views
1

SqlProvider을 사용할 때 org.apache.ibatis.reflection.ReflectionException ("There is no getter for property named 'providerTakesParameterObject' in 'class org.apache.ibatis.builder.annotation.ProviderSqlSource'") 예외가 발생했습니다. 나는 그것을 봤 거든 SqlProvider 하나 이상의 인수를 취할 수없는 것 같습니다.`SqlProvider`는`MyBatis`에서 둘 이상의 매개 변수를 가져올 수 있습니까?

MyTableMapper.java

public interface MyTableMapper{ 
    @SelectProvider(type=MyTableSqlProvider.class, method="selectSelective") 
    List<MyTable> selectSelective(Date from, Date to, String searchkey); 
} 

MyTableSqlProvider.java

public class MyTableSqlProvider{ 
    public String selectSelective(Date from, Date to, String name) { 
    return new SQL() {{ 
     SELECT("*"); 
     FROM("MyTable"); 
     if(from!=null){ 
      WHERE("createtime >= {#from,jdbcType=TIMESTAMP}"); 
     } 
     if(to!=null){ 
      WHERE("createtime <= {#to,jdbcType=TIMESTAMP}"); 
     } 
     if(!StringUtils.isBlank(name)){ 
      WHERE("title like %{#name,jdbcType=VARCHAR}%"); 
     } 
    }}.toString(); 
} 
} 

코드 위에서 실행할 수 없습니다 : 여기에 데모 코드입니다. 하지만 어떻게 모든 문제를 해결할 수 있습니까?

답변

0

마지막으로 이유를 발견했습니다. MyBatis 님의 버그가 아닙니다. 플러그인 Mybatis-PageHelper을 사용했습니다. 이전 버전의 플러그인은 MyBatis 3.4.0을 지원할 수 없습니다. 나는 플러그인을 업데이 트하고 지금은 정확합니다.