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" />