Als ich versuchte, SqlProvider
zu verwenden, bekam ich eine Ausnahme org.apache.ibatis.reflection.ReflectionException
(sagt "There is no getter for property named 'providerTakesParameterObject' in 'class org.apache.ibatis.builder.annotation.ProviderSqlSource'
"). Ich googelte es und es scheint, dass ein SqlProvider
nicht mehr als ein Argument nehmen kann. Hier ist die Demo-Code:Wie kann `SqlProvider` mehr als 1 Parameter in` MyBatis` aufnehmen?
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();
}
}
Die Codes oben kann nicht ausgeführt werden. Aber wie kann ich dafür sorgen, dass alle Argumente berücksichtigt werden?