gpt4 book ai didi

java - 使用oracle函数时如何在mybatis中将参数作为CLOB传递?

转载 作者:行者123 更新时间:2023-12-02 05:05:06 25 4
gpt4 key购买 nike

我正在尝试将一个冗长的 WKT(有关地理信息的长字符串)放入 Oracle 空间函数 SDO_GEOMETRY 中,以使用 mybatis 将 WKT 转换为 Oracle 几何类型。数据库中没有存储WKT的列,它仅用作上述函数中的参数。该项目的java类型是String,当我尝试将其放入时会返回错误,说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 对象时使用。
尝试在参数引用中指定 typeHandler。例如
#{wkt,typeHandler=example.Utils.OracleClobTypeHandler}

请注意,如果类型处理程序是 Utils 的内部类,它必须被引用为 example.Utils$OracleClobTypeHandler相反。

关于java - 使用oracle函数时如何在mybatis中将参数作为CLOB传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56357968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com