gpt4 book ai didi

java - 放入 标签时不执行 MyBatis 自定义 TypeHandler

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:27:31 26 4
gpt4 key购买 nike

我有一个 <resultMap>定制 typeHandler对于其中一个结果属性:

<resultMap id="foo" type="hashmap">
...
<result property="SERVICES_XML" javaType="string" jdbcType="CLOB" typeHandler="com.foo.bar.OracleClobTypeHandler" />
...
</resultMap>

无论我将我的处理程序附加到哪个属性(我的意思是这不是 不是 CLOB 特定的问题,也尝试使用 VARCHAR ),当我获取结果时不会调用处理程序来自数据库。

我已经在自定义处理程序的所有方法中设置了断点:

public class OracleClobTypeHandler implements TypeHandler<String> {

@Override
public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
log.debug("setParameter called"); <================ BREAKPOINT HERE
}

@Override
public String getResult(ResultSet rs, String columnName)
throws SQLException {
log.debug("getResult 2 called"); <================ BREAKPOINT HERE
return "";
}

@Override
public String getResult(ResultSet rs, int columnIndex)
throws SQLException {
log.debug("getResult 2 called"); <================ BREAKPOINT HERE
return "";
}

@Override
public String getResult(CallableStatement cs, int columnIndex)
throws SQLException {
log.debug("getResult 3 called"); <================ BREAKPOINT HERE
return "";
}
}

显然以上方法都没有执行。

我试着把 <typeHandler javaType="java.lang.String" jdbcType="CLOB" handler="com.foo.bar.OracleClobTypeHandler"/>在 myBatis 中 <configuration> ,但这也不起作用。
也没有做任何其他事情,包括扩展 TypeHandler<Object>等等。

我做错了什么?

最佳答案

挖了很久很久,我终于找到了答案。

这似乎是 myBatis 中的一个错误。

为了让您的处理程序为 <result> 工作元素,你必须指定 column显式属性即使property属性已经匹配bean中的列名和字段名
就我而言,它看起来像这样:

 <result property="SERVICES_XML" column="SERVICES_XML" javaType="string" jdbcType="CLOB" typeHandler="com.foo.bar.OracleClobTypeHandler" />

请注意,上述更改还将导致在 <configuration> 中定义的处理程序标记工作,所以内联 typeHandler可能不再需要 - 那是我的情况。我最终得到了:

<configuration>
<typeHandlers>
<typeHandler javaType="java.lang.String" jdbcType="CLOB" handler="com.foo.bar.OracleClobTypeHandler"/>
</typeHandlers>
</configuration>

<result property="SERVICES_XML" column="SERVICES_XML" javaType="string" jdbcType="CLOB" />

关于java - 放入 <result> 标签时不执行 MyBatis 自定义 TypeHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20122157/

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