欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MyBatis Generator错误总结

程序员文章站 2024-03-12 21:11:38
...

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

难道是最新的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目录下)
MyBatis Generator错误总结
解决方法:把WARN后的内容去掉
查看官方网址(http://www.mybatis.org/mybatis-3/configuration.html)也可知AutoMappingUnkownColumnBehavior只可取NONE,WARNING,FAILING三个值,默认值为NONE
MyBatis Generator错误总结

异常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 :错误信息如下:
MyBatis Generator错误总结

MyBatis Generator错误总结

MyBatis Generator错误总结

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