解释报错:Cause: org.apache.ibatis.builder.BuilderException: Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.INT
时间: 2023-06-28 21:10:32 浏览: 390
这个报错的意思是 MyBatis 找不到对应的枚举类型 JdbcType.INT。
通常情况下,MyBatis 使用 JdbcType 枚举类型来映射 Java 类型和 JDBC 类型。在你的 SQL 映射文件中,可能存在一个参数、结果集或者插入/更新语句的参数,它的 JDBC 类型指定为 JdbcType.INT,但是 MyBatis 找不到对应的枚举值。
解决这个问题的方法可能是:
1. 检查 SQL 映射文件中是否存在拼写错误,比如大小写不一致等。
2. 检查你的 MyBatis 版本是否与你使用的 JDBC 驱动版本兼容。如果不兼容,可能会导致 JdbcType 枚举类型不匹配。
3. 如果你在使用自定义类型处理器,确保你已经正确地实现了 JdbcType 的映射。
4. 如果你使用的是 MyBatis 3.5.x 版本,可以尝试升级到最新的 3.5.x 版本,因为这个问题已经在某些版本中得到了修复。
希望这些信息能够帮助你解决这个问题。
相关问题
Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.BigInteger
这个错误是因为Mybatis并没有提供JdbcType为BigInteger的枚举类型,而在parameterMap中你使用了BigInteger作为jdbcType的值。正确的做法是使用NUMERIC或者是BIGINT作为jdbcType的值。
所以你应该将parameterMap中orderNum的jdbcType修改为NUMERIC,例如:
```
<parameterMap id="orderStatusResult" type="Order">
<parameter property="orderNum" jdbcType="NUMERIC"/>
<parameter property="bookId" javaType="Integer"/>
</parameterMap>
```
希望能够帮到你。
Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.TINYINT UNSIGNED
这个错误是因为 MyBatis 在处理数据库中的 TINYINT UNSIGNED 类型时,无法映射到 JdbcType 类型。解决方法是在 MyBatis 的配置文件中为这种类型添加一个映射关系,例如:
```xml
<typeHandlers>
<typeHandler jdbcType="TINYINT UNSIGNED" javaType="java.lang.Integer" handler="org.apache.ibatis.type.IntegerTypeHandler"/>
</typeHandlers>
```
这里使用了 IntegerTypeHandler 来处理 TINYINT UNSIGNED 类型,你可以根据自己的需求选择合适的 TypeHandler。
阅读全文