MyBatis Generator错误总结

为什么 别人写的时候都是完美运行,丝般润滑,到我这里时,却是一连串的异常。

难道是最新的jdbc 6.x的锅?(驱动名和连接url已经改过的情况下,具体可见上篇: jdbc连接mysql5与连接mysql6

下面总结一下遇见的异常,方便以后。(先透露一下,最好使用5.x版本的jdbc)

异常1:log4j异常

MyBatis日志log4j异常 具体异常:

log4j:ERROR Could not instantiate class [org.apache.ibatis.session.AutoMappingUnknownColumnBehaviorTest$LastEventSavedAppender].
Java.lang.ClassNotFoundException: org.apache.ibatis.session.AutoMappingUnknownColumnBehaviorTest$LastEventSavedAppender

异常分析:无法将org.apache.ibatis.session.AutoMappingUnknownColumnBehaviorTest实例化为LastEventSavedAppender
实际原因:直接把mybatis目录下的官方log4j.properties直接拿来用了,下图是官方资源的log4j.properties
(mybatis-3-mybatis-x.x..x src\test\java目录下)

解决方法:把WARN后的内容去掉
查看官方网址(http://www.mybatis.org/mybatis-3/configuration.html)也可知AutoMappingUnkownColumnBehavior只可取NONE,WARNING,FAILING三个值,默认值为NONE

异常2:连接数据库时区异常

连接数据库:ERROR: The server time zone value ‘�й�׼’ is unrecognized or represents more than one time zone

提示系统时区出现错误,可以在MySQL中执行命令:
set global time_zone='+8:00'
或者在数据库驱动的url后加上serverTimezone=UTC参数

写代码的时候要注意,如果该参数是‘?’后的第一个,即

<property name="jdbcUrl"> jdbc:mysql://localhost:3306/exam?serverTimezone=UTC </property>

是没有问题的,但如果不是第一个,即

<property name="jdbcUrl"> jdbc:mysql://localhost:3306/exam?characterEncoding=utf8&serverTimezone=UTC </property>

这种写法是会报错的,会提示The reference to entity “serverTimezone” must end with the ‘;’ delimiter.
运行后控制台也会出现
对实体“serverTimezone”的引用必须以‘;’分隔符结尾。
的错误提示。
将代码改为

<property name="jdbcUrl"> jdbc:mysql://localhost:3306/exam?characterEncoding=utf8&amp;serverTimezone=UTC </property>

即可。在xml的配置文件中要用 &amp;代替。

异常3:列名为空异常

Column name pattern can not be NULL or empty

Mybatis-generator :错误信息如下:

产生错误的原因: 工程引用了mysql-connector-java-6.0.3.jar.
解决方法:使用5.x版本,eg:mysql-connector-java-5.1.38.jar,或更低版本
记得改回原来的驱动名

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MyBatis Generator是一个用于生成与数据库交互的代码的工具。当使用MyBatis Generator时,可能会遇到一些错误,其中一种常见的错误是"java.lang.StringIndexOutOfBoundsException: String index out of bounds"。 这个错误通常发生在尝试访问一个字符串的下标时,该下标超过了字符串的长度。这种情况可能会发生在MyBatis Generator生成的代码中,特别是在生成查询语句时。 要解决这个问题,可以考虑以下几个方面: 1. 检查生成器配置:请确保已正确配置生成器,包括指定正确的数据库连接信息、表名和字段等。如果配置出错,生成的代码可能会导致下标超出范围的错误。 2. 检查数据库表结构:确保数据库表的结构与生成器的期望相匹配。如果表结构发生更改,生成器可能无法正确生成查询语句,导致下标超出范围的错误。 3. 检查自定义方法:如果在生成代码时使用了自定义方法或扩展插件,确保这些方法没有导致下标超出范围的错误。可以查看相关代码并进行调试。 4. 更新 MyBatis Generator 版本:如果使用的是较旧的版本,可能会遇到已知的问题和错误。考虑更新到最新版本,以便修复已知的问题。 总之,"java.lang.StringIndexOutOfBoundsException: String index out of bounds"错误可能是由于MyBatis Generator配置、数据库表结构、自定义方法或使用过时版本等原因导致的。根据具体情况进行逐一排查和解决,可以解决这个问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值