ibatis No type handler could be found

异常堆栈主要如下:

--- Check the result mapping for the 'x' property.

No type handler could be found to map the property 'x' to the column 'x'. One or both of the types, or the combination of types is not supported.; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in a/b/c.xml.

--- Check the result mapping for the 'x' property.

原因:对应resultClass 中有一个字段

对应表中的jdbcType是CLOB,在dto中的javaType为java.lang.String

但是dto中的x属性有两set方法,即

setX(Map), setX(String)

ibatis调错了setX(Map),正 确的应该 调setX(String)

解决方法:重全名setX(map)为toXMap(Map);


这个错误通常发生在 MyBatis 中,它表示 MyBatis 找不到合适的类型处理器(type handler)来处理某个属性值,导致映射失败。 具体来说,这个错误可能发生在以下情况下: 1. 实体类中的某个属性类型没有对应的类型处理器。 2. MyBatis 配置文件中没有配置对应的类型处理器。 针对这个错误,可以采取以下解决方案: 1. 自定义类型处理器:对于实体类中的某个属性类型没有对应的类型处理器的情况,可以自定义类型处理器来处理该类型的值。具体来说,需要实现 org.apache.ibatis.type.TypeHandler 接口,并在 MyBatis 配置文件中配置该类型处理器。例如,对于 java.time.LocalDateTime 类型的属性,可以定义一个 LocalDateTimeTypeHandler 类型处理器来处理该类型的值。 2. 配置默认类型处理器:对于 MyBatis 配置文件中没有配置对应的类型处理器的情况,可以配置默认类型处理器来处理所有未知类型的值。具体来说,需要使用 typeHandlersPackage 属性来指定类型处理器所在的包,例如: ```xml <configuration> <typeHandlersPackage>com.example.typehandler</typeHandlersPackage> ... </configuration> ``` 这样,MyBatis 就会在指定的包中查找所有的类型处理器,并自动注册它们。 注意,如果使用了自定义类型处理器,需要在 MyBatis 映射文件中为对应的属性指定该类型处理器,例如: ```xml <resultMap id="myResultMap" type="com.example.MyEntity"> <result property="fileShouldTime" column="file_should_time" jdbcType="TIMESTAMP" typeHandler="com.example.LocalDateTimeTypeHandler" /> </resultMap> ``` 其中,typeHandler 属性指定了使用的类型处理器的类名。需要注意的是,这里的 com.example.LocalDateTimeTypeHandler 是一个示例,具体的类型处理器类名需要根据实际情况进行替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值