前言
我最近在使用MyBatis Generator的过程中遇到了点问题,网上虽然已有相关的解决方案,但结果不尽人意,都只是在规避问题,并没有真正的解决问题。所以我亲自操刀,深入源码,窥探其背后的秘密。
在进行了一番调试分析后,俺最终将问题解决了。这里就跟大伙剖析下鄙人是如何折腾的。
环境
JAVA8
数据库mysql 5.7
mysql驱动mysql-connector-java-6.0.6.jar
Mybatis Generator 1.3.5
问题
我本机的mysql数据库里面有个名为piwik的“schema”,里面有张表piwik_log_action,我想通过MyBatis Generator(以下简称为MBG)生成这张表的entity、mapper等文件。
但是执行MBG后,发现mapper里没有selectByPrimaryKey、updateByPrimaryKey等与主键相关的方法,而表里面是有主键的。
后来发现,执行MBG的时候控制台出现了这样的警告信息:Cannot obtain primary key information from the database, generated objects may be incomplete。意思是无法获取数据库的主键信息,那么当然就无法生成byPrimaryKey的方法了。
下面是我的generatorConfig.xml配置信息。
/p>
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
connectionURL="jdbc:mysql://localhost:3306/piwik?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"
userId="root"
password="123456">
targetProject="service-ua/src/main/java">
定位
考虑到我之前使用MBG1.3.2以及mysq驱动5.1.42,生成的mapper是没问题的,所以问题出现的原因就锁定在版本上了。OK,我轮番切换版本号,最后发现mysql驱动为5.1.42版本的时候,MBG不