【发布时间】:2019-08-28 20:44:13
【问题描述】:
我想在我的映射器文件中引用一个对象中的一个属性,它是一个 SQL IN 条件中的字符串数组。该查询进行计数,因此它只需要返回一个数值。查询需要根据过滤器对象中定义的一组灵活的标准来调整其计数。一些过滤器将存在(即不为空),而其他过滤器将不存在。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="TotalUniqueUsers">
<select id="getTotalUniqueUsers"
resultType="int"
parameterType="RequestFilter">
SELECT *
FROM MY_TABLE
WHERE
<if test="quarterList!=null and quarterList.length>0">
AND trim(FISCAL_QUARTER_NAME) IN #{quarterList javaType=list}
</if>
</select>
</mapper>
public class RequestFilter {
private String[] quarterList;
public String[] getQuarterList(){
return this.quarterList;
}
public void setQuarterList(String[] quarterList){
this.quarterList=quarterList;
}
}
注意,RequestFilter 没有类型处理程序。我不认为我需要一个。我并不是想以某种奇怪的方式将一个对象压缩成一个字段。我想要做的就是有一个输入参数
通过以上,我得到 org.apache.ibatis.exceptions.PersistenceException: ... 原因:org.apache.ibatis.reflection.ReflectionException:'class RequestFilter'中名为'quarterList javaType=list'的属性没有getter
我也尝试了 javaType=Array,但得到了相同的结果。如果我改变了
#{quarterList javaType=list}
到
#{quarterList}
它表示 RequestFilter 的 typeHandler 为空。
【问题讨论】:
标签: mybatis