如何在使用 oracle 函数时在 mybatis 中将参数作为 CLOB 传递?
How to pass arguments as CLOB in mybatis while using oracle functions?
我正在尝试将冗长的 WKT(关于地理信息的长字符串)放入 oracle 空间函数 SDO_GEOMETRY
以使用 mybatis 将 WKT 转换为 oracle 几何类型。数据库中没有存储 WKT 的列,它仅用作上述函数中的参数。项目的 java 类型是 String
,当我尝试将它放入其中时会出现 return 错误,说 String too long。这表明该字符串没有被转换为 CLOB。我该怎么做?
我试过在mybatis的开头使用这个。xml file:
<resultMap type="example.Building" id="BaseResultMap">
<result property="geom" column="geom" jdbcType="CLOB"
javaType = "java.lang.String" typeHandler ="example.Utils.OracleClobTypeHandler"/>
</resultMap>
我有一个 OracleClobTypeHandler
class 设置。
我也尝试过使用 #{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
的内部 class,则必须将其引用为 example.Utils$OracleClobTypeHandler
。
我正在尝试将冗长的 WKT(关于地理信息的长字符串)放入 oracle 空间函数 SDO_GEOMETRY
以使用 mybatis 将 WKT 转换为 oracle 几何类型。数据库中没有存储 WKT 的列,它仅用作上述函数中的参数。项目的 java 类型是 String
,当我尝试将它放入其中时会出现 return 错误,说 String too long。这表明该字符串没有被转换为 CLOB。我该怎么做?
我试过在mybatis的开头使用这个。xml file:
<resultMap type="example.Building" id="BaseResultMap">
<result property="geom" column="geom" jdbcType="CLOB"
javaType = "java.lang.String" typeHandler ="example.Utils.OracleClobTypeHandler"/>
</resultMap>
我有一个 OracleClobTypeHandler
class 设置。
我也尝试过使用 #{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
的内部 class,则必须将其引用为 example.Utils$OracleClobTypeHandler
。