一段ibatis查询语句如下:
<select id="getDownloadApkURL" parameterClass="domain.BaseQueryDO" resultClass="java.lang.String">
SELECT
update_url
FROM idle_apk_info
WHERE
state >= 0
<isGreaterThan prepend="AND" property="apkId" compareValue="0">
id = #apkId#
</isGreaterThan>
<isNotNull prepend="AND" property="apkVersionName">
apk_version_name = #apkVersionName#
</isNotNull>
<isGreaterThan prepend="AND" property="apkVersionCode" compareProperty="0">
apk_version_code = #apkVersionCode#
</isGreaterThan>
</select>
其中BaseQueryDO的定义如下:
public @Data class BaseQueryDO extends QueryBase{
private static final int PAGE_SIZE = 5;
private int state;
private int id;
private int apkId;
private String apkName;
private String apkVersionName;
private double apkVersionCode;
@Override
protected Integer getDefaultPageSize() {
return PAGE_SIZE;
}
}
执行期间报错:
Cause: com.ibatis.common.beans.ProbeException: There is no READABLE property named '0' in class 'domain.BaseQueryDO'; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in sqlmap/ApkInfo.xml.
--- The error occurred while preparing the mapped statement for execution.
--- Check the apk_version.getDownloadApkURL.
--- Check the parameter map.
--- The error occurred in sqlmap/ApkInfo.xml.
--- The error occurred while preparing the mapped statement for execution.
--- Check the apk_version.getDownloadApkURL.
--- Check the parameter map.
使劲看了一下ibatis映射文件都没有发现错误。
没办法单条注释ibatis映射语句,发现打开
<isGreaterThan prepend="AND" property="apkVersionCode" compareProperty="0">
apk_version_code = #apkVersionCode#
</isGreaterThan>
就会报错。
估计是isGreaterThan这个函数对double型不起作用,但是在网上找了一番,没找到相关资料。
不得已,将
private double apkVersionCode;
修改成:
private Double apkVersionCode;
然后采用
<isNotNull prepend="AND" property="apkVersionCode" >
apk_version_code = #apkVersionCode#
</isNotNull >
来解决问题
ps:哪位能告诉我为毛double不能执行isGreaterThan操作么?