一段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操作么?