如何在使用预言机函数时在 mybatis 中将参数作为 CLOB 传递



我正在尝试将冗长的WKT(关于地理信息的长字符串(放入预言机空间函数中,SDO_GEOMETRY使用mybatis将WKT转换为预言机几何类型。数据库中没有存储WKT的列,它仅用作所述函数中的参数。该项目的java类型是String,当我尝试将其放入时会返回错误,说字符串太长。这表示字符串未转换为 CLOB。我该怎么做?

我尝试在mybatis .xml文件的开头使用它:

<resultMap type="example.Building" id="BaseResultMap">
        <result property="geom" column="geom" jdbcType="CLOB"
                javaType = "java.lang.String"  typeHandler ="example.Utils.OracleClobTypeHandler"/>
    </resultMap>

我设置了一个OracleClobTypeHandler类。

我也尝试使用#{wkt,jdbcType=CLOB}但无处可去。

编辑:这是OracleClobTypeHandler中的SetParameter方法:

    @Override
    public void setParameter(PreparedStatement arg0, int arg1, Object arg2, JdbcType arg3) throws SQLException {
        CLOB clob = CLOB.getEmptyCLOB();
        clob.setString(1, (String) arg2);
        arg0.setClob(arg1, clob);
    }
<resultMap />无关

紧要,因为它是在将查询结果映射到 Java 对象时使用的。
尝试在参数引用中指定类型处理程序。例如
#{wkt,typeHandler=example.Utils.OracleClobTypeHandler}

请注意,如果类型处理程序是 Utils 的内部类,则必须将其作为 example.Utils$OracleClobTypeHandler 引用。

最新更新