在SpringBoot+mybatisPlus查询sql语句时出现了如下问题:
2023-06-26 15:38:35.157 ERROR 24548 --- [nio-8202-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'activity_type' from result set. Cause: java.lang.IllegalArgumentException: No enum constant com.atguigu.ssyx.enums.ActivityType.1] with root cause
java.lang.IllegalArgumentException: No enum constant com.atguigu.ssyx.enums.ActivityType.1
at java.lang.Enum.valueOf(Enum.java:238) ~[na:1.8.0_201]
at org.apache.ibatis.type.EnumTypeHandler.getNullableResult(EnumTypeHandler.java:49) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.type.EnumTypeHandler.getNullableResult(EnumTypeHandler.java:26) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:85) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyAutomaticMappings(DefaultResultSetHandler.java:560) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:402) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:354) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:328) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:301) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:194) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65) ~[mybatis-3.5.6.jar:3.5.6]
原因是查询出来的sql语句的字符串转换成枚举类失败,如下图字段名和枚举类:
sql的字段名:
枚举类:
这怎么可能能转化成功?
解决办法就是在SpringBoot的yml配置文件中配置枚举类转换器,指定要转换的枚举类所在的包:
mybatis-plus:
configuration:
# 此为日志输出,将日志输出到控制台
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#枚举类转换器,值为要转换的枚举类所在的包
type-enums-package: com.atguigu.ssyx.enums