Java MyBatis自定义类型处理程序在放入时未执行<;结果>;标签

Java MyBatis自定义类型处理程序在放入时未执行<;结果>;标签,java,mybatis,typehandler,Java,Mybatis,Typehandler,对于其中一个结果属性,我有一个带有自定义类型处理程序的: <resultMap id="foo" type="hashmap"> ... <result property="SERVICES_XML" javaType="string" jdbcType="CLOB" typeHandler="com.foo.bar.OracleClobTypeHandler" /> ... </resultMap> 显然,上述方法均未执行 我试图

对于其中一个结果属性,我有一个带有自定义
类型处理程序的

<resultMap id="foo" type="hashmap">
    ... 
    <result property="SERVICES_XML" javaType="string" jdbcType="CLOB" typeHandler="com.foo.bar.OracleClobTypeHandler" />
    ...
</resultMap>
显然,上述方法均未执行

我试图将
放入myBatis
,但这也不起作用。
也没有做任何其他事情,包括扩展
TypeHandler
等等


我做错了什么?

经过长时间的挖掘,我终于找到了答案

这似乎是myBatis中的一个bug

为了让您的处理程序为
元素工作,您必须明确指定
属性,即使
属性
属性已经与bean中的列名和字段名匹配
在我的例子中,它看起来是这样的:

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


虽然这个问题已经提出3年了,但我敢打赌,这个问题与从结果元数据检索到的Oracle“大写”列名称有关,而区分大小写的java对象属性名称通常遵循驼峰大小写

除非在SQL查询中使用带引号的别名,否则需要显式的列属性映射。 . 与最新评论中所说的不同,我观察到引用alias的顺序是有效的

 <result property="SERVICES_XML" column="SERVICES_XML" javaType="string" jdbcType="CLOB" typeHandler="com.foo.bar.OracleClobTypeHandler" />
<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" />