No typehandler found for property xxxx
报错信息
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [E:\code\Api\target\classes\mapper\CouponMapper.xml]'. Cause: java.lang.IllegalStateException: No typehandler found for property ruleat org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:127)at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:100)at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:698)... 102 common frames omitted
Caused by: java.lang.IllegalStateException: No typehandler found for property ruleat org.apache.ibatis.mapping.ResultMapping$Builder.validate(ResultMapping.java:153)at org.apache.ibatis.mapping.ResultMapping$Builder.build(ResultMapping.java:140)at org.apache.ibatis.builder.MapperBuilderAssistant.buildResultMapping(MapperBuilderAssistant.java:352)at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildResultMappingFromContext(XMLMapperBuilder.java:403)at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:286)at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:261)at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:253)at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:123)... 104 common frames omitted
数据库字段
![]()
实体中的字段
![]()
xml中的映射
![]()
解决方案
1.添加JsonTypeHandler类
@MappedTypes(Object.class) // 指定映射的目标类型为 Object
public class JsonTypeHandler extends BaseTypeHandler<Object> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {String jsonString = JSONUtil.toJsonStr(parameter);ps.setString(i, jsonString);}@Overridepublic Object getNullableResult(ResultSet rs, String columnName) throws SQLException {return parseJson(rs.getString(columnName));}@Overridepublic Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException {return parseJson(rs.getString(columnIndex));}@Overridepublic Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {return parseJson(cs.getString(columnIndex));}private Object parseJson(String jsonString) {if (jsonString == null) {return null;}else {Object json = new JSONTokener(jsonString, JSONConfig.create().setIgnoreError(true)).nextValue();if (json instanceof cn.hutool.json.JSONObject) {return JSONUtil.parseObj(jsonString);}if (json instanceof cn.hutool.json.JSONArray) {return JSONUtil.parseArray(jsonString);}return jsonString;}}}
2.修改xml映射
![]()
