Как `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
, Я обновляю плагин и теперь он правильный.