有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用参数类型int时,java MyBatis的列类型无效

每当我尝试在查询中使用参数时,就会得到SQLException“Invalid Column Type”。数据库字段“assessment_id”在oracle中为“NUMBER(15)”类型。如果我将#{value}更改为1,那么它将正常工作并返回关注对象列表。但是,当我尝试使用此参数时,会出现SQL异常。我仍然不确定在XML中为变量名添加什么,我尝试使用与传入的变量相同的名称

这是我的映射器配置

<mapper namespace="ConcernMap">
<resultMap id="ConcernResult" type="com.xxx.name.model.Concern" >
    <result column="insCurrent" property="insCurrent"/>
</resultMap>

<select id="fetchConcernsByWorkflowId" parameterType="int" resultMap="ConcernResult">
    SELECT 
    INSURANCE_CURRENT as insCurrent 
    from KOR_CONCERN where assessment_id = #{value}
</select>
</mapper>

共 (2) 个答案

  1. # 1 楼答案

    我也有类似的错误,但使用了@Results注释

    事实证明,Mybatis对Lombok的@Builder不太好,并且错误地识别了我的bean的属性类型

    从bean中删除@Builder注释解决了这个问题

  2. # 2 楼答案

    尝试将jdbcType=NUMERIC添加到查询中

    SELECT 
    INSURANCE_CURRENT as insCurrent 
    from KOR_CONCERN where assessment_id = #{value,jdbcType=NUMERIC}