当我尝试使用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();
}
}
上述代码无法运行。但是我怎么能把它拿走所有的args?
答案 0 :(得分:0)
最后我找到了原因。它不是MyBatis
的错误。我使用了一个插件Mybatis-PageHelper。旧版本的插件无法支持MyBatis 3.4.0
。我更新了插件,现在是正确的。