Как `SqlProvider` может принимать более 1 параметра в MyBatis?

Когда я пытался использовать SqlProvider Я получил исключение org.apache.ibatis.reflection.ReflectionException(говорит "There is no getter for property named 'providerTakesParameterObject' in 'class org.apache.ibatis.builder.annotation.ProviderSqlSource'"). Я гуглил это, и кажется, что SqlProvider не может принять более одного аргумента. Вот демонстрационный код:

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();
}
}

Коды выше не могут работать. Но как я могу заставить его принять все арги?

1 ответ

Наконец я нашел причину. Это не MyBatisошибка Я использовал плагин Mybatis-PageHelper. Старая версия плагина не может поддерживать MyBatis 3.4.0, Я обновляю плагин и теперь он правильный.

Другие вопросы по тегам