版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/guo_xl/article/details/86004068
步骤
- 编写XML配置文件generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="MysqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<commentGenerator>
<property name="suppressDate" value="true"/>
</commentGenerator>
<!--配置数据库信息-->
<jdbcConnection driverClass="org.mariadb.jdbc.Driver"
connectionURL="jdbc:mariadb://localhost:3306/mydb"
userId="root"
password="devuser">
</jdbcConnection>
<!--根据table生成的实体类-->
<javaModelGenerator targetPackage="rechard.learn.mybatis.entities" targetProject="src/main/java">
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--mybatis的xml-->
<sqlMapGenerator targetPackage="rechard.learn.mybatis.xml" targetProject="src/main/resources"/>
<!--mybatis的xml对应的接口-->
<javaClientGenerator type="XMLMAPPER" targetPackage="rechard.learn.mybatis.mappers" targetProject="src/main/java"/>
<!--配置的表-->
<table tableName="TEST">
<generatedKey column="id" sqlStatement="Mysql"/>
</table>
</context>
</generatorConfiguration>
更多信息可以参照官方提供配置xml
http://www.mybatis.org/generator/configreference/xmlconfig.html
- SQL建立一张TEST的表
drop table if exists `TEST`;
CREATE TABLE `TEST` (
`TESTKY` int(11) NOT NUlL PRIMARY KEY,
`NAME` varchar(200) not null default '',
`UPDATEDTTM` timestamp NOT NULL DEFAULT current_timestamp(),
`UPDATEUSER` varchar(32) COLLATE utf8_bin NOT NULL,
`VERSIONSTAMP` smallint(6) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC;
- 怎样生成
通过以下方式- command line
- ant
- maven
- java code
下面主要关注 command line 和 maven
- command line 方式
打开一个命令端,输入以下
cd E:\mvn\repository\org\mybatis\generator\mybatis-generator-core\1.3.5
java -jar mybatis-generator-core-1.3.5.jar -configfile D:\code\xxx-mybatis\src\main\resources\generatorConfig.xml
报
Caused by: java.lang.ClassNotFoundException: org.mariadb.jdbc.Driver
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
也就是org.mariadb.jdbc.Driver
找不到,需要配置org.mariadb.jdbc.Driver
包到classpath里,如下
java -jar mybatis-generator-core-1.3.5.jar
-classpath E:\mvn\repository\org\mariadb\jdbc\mariadb-java-client\2.3.0\mariadb-java-client-2.3.0.jar
-configfile D:\code\xxx-mybatis\src\main\resources\generatorConfig.xml
- maven 方式 推荐使用这种
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<dependencies>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
maven 命令
mvn -Dmybatis.generator.overwrite=true -Dmybatis.generator.configurationFile=.\src\main\resources\generatorConfig.xml mybatis-generator:generate
说明:
- mybatis.generator.configurationFile 指定配置文件
- mybatis.generator.overwrite 覆盖已经存在的source code
这些配置可以看官方参考文档 里的Parameter Reference
- 配置文件generatorConfig.xml 的一些比较重要的配置
生成的类名
- 生的类名默认是数据库表名,
domainObjectName
可以重命名成需要的类名,例如RPTDEF
重名成RptDef.java
<table tableName="RPTDEF" domainObjectName="RptDef">
</table>
生成的类里的字段类型
- 制定model里的字段类型,例如表里的字段如果是boolean类型,默认生成
private byte[] isdelete
,使用<columnOverride column="ISDELETE" javaType="boolean" />
后,生成private boolean isdelete
<table tableName="RPTDEF" domainObjectName="RptDef">
<columnOverride column="ISDELETE" javaType="boolean" />
</table>
生成的主键
生成的主键在generatedKey
里,
sqlStatement
指明是使用哪种数据库- identity=“true”,如果设成true,如
<table tableName="RPTDEF" domainObjectName="RptDef">
<generatedKey column="RPTDEFKY" sqlStatement="Mysql" identity="true" />
<columnOverride column="ISDELETE" javaType="boolean" />
</table>
将生成之后主键返回给RptDef.rptdefky。这个很有用,例如想在代码里取到生成的主键.
RPTInstMapper.insertSelective(inst);
int rptInstKy = inst.getRptinstky();
7.重新生成代码覆盖问题
后期生成如果不想覆盖已经存在的java等,将mybatis.generator.overwrite
设成false。但mapper的xml文件不会保存,会被覆盖掉,不知道是否是个坑。所以最要将mapper的xml文件保存下。后面做手动merge
参考文档
http://www.mybatis.org/generator/index.html
http://www.mybatis.org/generator/configreference/xmlconfig.html#