我正在从 iBatis 迁移到 myBatis,并且在转换过程中,我曾经有过可以使用的查询,但现在不行了。我一直用头撞墙的时间比我想承认的要让它工作的时间更长。
iBatis 中的查询是:
<select id="countForACol" parameterClass="java.lang.Long" resultClass="java.lang.Long">
SELECT
COUNT(1) AS 'val'
FROM
someTable WITH(NOLOCK)
<isParameterPresent prepend="WHERE">
someCol = #colId#
</isParameterPresent>
</select>
现在,我已将其翻译成如下所示的查询:
<select id="selectTotalRegionCountForGbs" parameterType="Long" resultType="java.lang.Long">
SELECT
COUNT(1) AS 'val'
FROM
someTable WITH(NOLOCK)
<where>
<if test="colId != null">
someCol = #{colId}
</if>
</where>
</select>
然而,这不起作用。我尝试运行它时收到的错误是:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'colId' in 'class java.lang.Long'
Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'colId' in 'class java.lang.Long'
我可以说它正在尝试将 Long 对象视为具有称为“getColId”的 getter 的对象,但我不知道如何向 MyBatis 发出信号以使用 Long 的值。
我怎样才能让它工作?