> 文档中心 > MyBatis Generator使用方法(详细)

MyBatis Generator使用方法(详细)

文章目录

  • 一、简介
  • 二、官方解释(如何配置使用)
  • 三、配置方法
      • 3.1、配置方法一
      • 3.2、配置方法二
      • 3.3 配置方式

一、简介

MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器。它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码。它将内省数据库表(或许多表),并将生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表交互的初始麻烦。MBG寻求对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍然需要为连接查询或存储过程手动编写SQL和对象代码。
MyBatis Generator将生成:

与表结构匹配的Java POJO。这可能包括:

  • 一个匹配表的主键的类(如果有主键)
  • 一个匹配表的非主键字段的类(BLOB字段除外)
  • 包含表的BLOB字段的类(如果表具有BLOB字段)
  • 用于启用动态选择,更新和删除的类

这些类之间存在适当的继承关系。请注意,生成器可以配置为生成不同类型的POJO层次结构 - 例如,如果您愿意,可以选择为每个表生成单个域对象。

Java客户端类的生成是可选的。MBG将为MyBatis 3.x生成以下类型的Java客户端:

  • 适用于MyBatis 3.x映射器基础结构的映射器接口

MBG将为iBATIS 2.x生成以下类型的Java客户端:

  • 符合Spring框架的DAO
  • 仅使用iBATIS SQL映射API的DAO。这些DAO可以生成两种:通过构造函数或setter注入提供SqlMapClient。
  • 符合iBATIS DAO框架的DAO(iBATIS的可选部分,现在不推荐使用此框架,我们建议您使用Spring框架)

MyBatis生成器设计为在迭代开发环境中运行良好,并且可以作为Ant任务或Maven插件包含在连续构建环境中。迭代运行MBG时需要注意的重要事项包括:

  • 如果存在与新生成的XML文件同名的现有文件,MBG将自动合并XML文件。MBG不会覆盖您对其生成的XML文件所做的任何自定义更改。您可以反复运行它,而不必担心会丢失对XML的自定义更改。MBG将替换先前运行中生成的任何XML元素。
  • MBG 不会合并Java文件,它可以覆盖现有文件或使用不同的唯一名称保存新生成的文件。如果对生成的Java文件进行更改并以迭代方式运行MBG,则必须手动合并更改。当作为Eclipse 插件运行时 ,MBG可以自动合并Java文件。

二、官方解释(如何配置使用)

点击查看

三、配置方法

3.1、配置方法一

  1. 在resources文件夹下创建一个目录mybatis-generator,在目录mybatis-generator下创建文件generatorConfig.xml(此处的目录名可任意取)
    注:图中generator.properties先不用建,这是配置方式二用到的
    在这里插入图片描述
  2. pom.xml中引入依赖(完整的pom.xml内容放在文末)
<plugin>   <groupId>org.mybatis.generator</groupId>    <artifactId>mybatis-generator-maven-plugin</artifactId>    <version>1.3.5</version>    <configuration> <configurationFile>${basedir}/src/main/resources/mybatis-generator/generatorConfig.xml </configurationFile> <overwrite>true</overwrite> <verbose>true</verbose>    </configuration></plugin>
  1. 配置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>    <properties resource="mybatis-generator/generator.properties"/><!--    连接数据库jar包的路径-->    <classPathEntry location="d:/java/JavaTools/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar"/>    <context id="DB2Tables"  targetRuntime="MyBatis3"> <commentGenerator>     <property name="suppressDate" value="true"/>     <!-- 是否去除自动生成的注释 true:是 : false:-->     <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库连接参数 --> <jdbcConnection  driverClass="com.mysql.jdbc.Driver"  connectionURL="jdbc:mysql://localhost:3306/booksys?serverTimezone=UTC&useSSL=true"  userId="xxx"  password="xxx"> </jdbcConnection> <javaTypeResolver>     <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 实体类的包名和存放路径 --> <javaModelGenerator targetPackage="com.fy.gen_test.domain" targetProject="src/main/java">     <property name="enableSubPackages" value="true"/>     <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成映射文件*.xml的位置--> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">     <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成DAO的包名和位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.fy.gen_test.mapper" targetProject="src/main/java">     <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- tableName:数据库中的表名或视图名;domainObjectName:生成的实体类的类名--> <table tableName="book" domainObjectName="Book" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/><!--  <table tableName="xxx" domainObjectName="xxx" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> ... <table tableName="xxx" domainObjectName="xxx" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->  </context></generatorConfiguration>
  1. 最后一步
    在这里插入图片描述

3.2、配置方法二

此方式与配置方式一相比,略做改动即可

  1. 在配置在目录myBatis-generator下创建文件generator.properties
driverLocation=d:/java/JavaTools/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jardriverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/booksys?serverTimezone=UTC&useSSL=trueusername=xxxpassword=xxx
  1. 修改文件generatorConfig.xml
    在这里插入图片描述

3.3 配置方式三

pom.xml中引入依赖

<plugin>   <groupId>org.mybatis.generator</groupId>   <artifactId>mybatis-generator-maven-plugin</artifactId>   <version>1.3.5</version>    <!--    多了这个-->   <dependencies><dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>5.1.21</version></dependency>   </dependencies>   <configuration><configurationFile>${basedir}/src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose>   </configuration></plugin>

generator.properties

#注释掉#driverLocation=d:/java/JavaTools/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jardriverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/booksys?serverTimezone=UTC&useSSL=trueusername=rootpassword=fanyi

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>    <properties resource="mybatis-generator/generator.properties"/>    <!--    注释掉-->    <!--    <classPathEntry location="${driverLocation}"/>-->    <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator>     <property name="suppressDate" value="true"/>     <!-- 是否去除自动生成的注释 true:是 : false:-->     <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库连接参数 --> <jdbcConnection  driverClass="${driverClassName}"  connectionURL="${url}"  userId="${username}"  password="${password}"> </jdbcConnection> <javaTypeResolver>     <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 实体类的包名和存放路径 --> <javaModelGenerator targetPackage="com.fy.gen_test.domain" targetProject="src/main/java">     <property name="enableSubPackages" value="true"/>     <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成映射文件*.xml的位置--> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">     <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成DAO的包名和位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.fy.gen_test.mapper" targetProject="src/main/java">     <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- tableName:数据库中的表名或视图名;domainObjectName:生成的实体类的类名--> <table tableName="book" domainObjectName="Book" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>   </context></generatorConfiguration>

完整的pom.xml内容

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.fy</groupId>    <artifactId>gen_test</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>gen_test</name>    <description>Demo project for Spring Boot</description>    <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.3.0.RELEASE</spring-boot.version>    </properties>    <dependencies> <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency>     <groupId>org.mybatis.spring.boot</groupId>     <artifactId>mybatis-spring-boot-starter</artifactId>     <version>2.1.2</version> </dependency> <!-- mysql --> <!-- <dependency>--> <!--     <groupId>mysql</groupId>--> <!--     <artifactId>mysql-connector-java</artifactId>--> <!--     <scope>runtime</scope>--> <!-- </dependency>--> <!-- <dependency>--> <!--     <groupId>mysql</groupId>--> <!--     <artifactId>mysql-connector-java</artifactId>--> <!--     <version>5.1.21</version>--> <!-- </dependency>--> <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-test</artifactId>     <scope>test</scope>     <exclusions>  <exclusion>      <groupId>org.junit.vintage</groupId>      <artifactId>junit-vintage-engine</artifactId>  </exclusion>     </exclusions> </dependency>    </dependencies>    <dependencyManagement> <dependencies>     <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-dependencies</artifactId>  <version>${spring-boot.version}</version>  <type>pom</type>  <scope>import</scope>     </dependency> </dependencies>    </dependencyManagement>    <build> <plugins>     <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-compiler-plugin</artifactId>  <configuration>      <source>1.8</source>      <target>1.8</target>      <encoding>UTF-8</encoding>  </configuration>     </plugin>     <plugin>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-maven-plugin</artifactId>     </plugin>     <plugin>  <groupId>org.mybatis.generator</groupId>  <artifactId>mybatis-generator-maven-plugin</artifactId>  <version>1.3.5</version>  <configuration>      <configurationFile>${basedir}/src/main/resources/mybatis-generator/generatorConfig.xml      </configurationFile>      <overwrite>true</overwrite>      <verbose>true</verbose>  </configuration>     </plugin> </plugins>    </build></project>

多事通报价网