Mybatis Generator-自动化生成代码步骤

版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/guo_xl/article/details/86004068

步骤

  1. 编写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

  1. 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;
  1. 怎样生成
    通过以下方式
    • command line
    • ant
    • maven
    • java code

下面主要关注 command line 和 maven

  1. 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
  1. 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

  1. 配置文件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#

猜你喜欢

转载自blog.csdn.net/guo_xl/article/details/86004068