MyBatis Generator 代码生成器

MyBatis Generator 代码生成器

MyBatis Generator简介

 

MyBatis Generator(MBG)是MyBatis 的代码生成器。它将为MyBatis的所有版本生成代码。它将内一个数据库表(或多个表),并将生成可用于访问表的工件。这减轻了设置对象和配置文件以与数据库表进行交互的麻烦。MBG试图对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍将需要手工编写SQL和对象代码以进行联接查询或存储过程。

MBG会根据其配置方式以不同的样式和不同的语言生成代码。例如,MBG可以生成Java或Kotlin代码。MBG可以生成与MyBatis3兼容的XML-尽管现在认为是MBG旧版使用。较新的生成代码样式不需要XML。

根据其配置方式,MyBatis Generator可能会生成:

  • 与表结构匹配的Java或Kotlin类。这可能包括:
    • 一个与表的主键匹配的类(如果有主键)
    • 一个与表的非主键字段匹配的类(BLOB字段除外)
    • 一个包含表的BLOB字段的类(如果表具有BLOB字段)
    • 一个启用动态选择,更新和删除的类

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

  • 在某些情况下,MBG将生成MyBatis3兼容的SQL Map XML文件。MBG为配置中的每个表上的简单CRUD函数生成SQL。生成的SQL语句包括:
    • 插入
    • 通过主键更新
    • 通过示例进行更新(使用动态where子句)
    • 通过主键删除
    • 通过示例删除(使用动态where子句)
    • 通过主键选择
    • 通过示例选择(使用动态where子句)
    • 以身作则

这些语句的变化取决于表的结构(例如,如果表没有主键,则MBG不会通过主键功能生成更新)。

  • 适当利用上述对象的Java或Kotlin客户端类,接口和Kotlin扩展方法。客户端类的生成是可选的。MBG将生成一个与MyBatis 3.x映射器基础结构一起使用的映射器接口。

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

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

使用Eclipse运行

作为Eclipse功能运行时,生成器还可以合并Java文件并将用户修改保存到生成的Java文件中。生成器使用Eclipse Java分析器和AST Walker来完成此任务。Eclipse功能还具有一些用户界面增强功能,这些功能使生成器的运行更加容易。最后,Eclipse功能为Eclipse帮助系统提供了完整的生成器用户手册。

Eclipse功能可以在Eclipse市场上找到:https : //marketplace.eclipse.org/content/mybatis-generator

依存关系

MBG除了JRE外没有其他依赖项。需要Java 8或更高版本。此外,还需要一个实现DatabaseMetaData接口的JDBC驱动程序,尤其是getColumns和 getPrimaryKeys方法。

支持

通过MyBatis用户邮件列表提供对MyBatis Generator的支持。您可以在此处通过Google代码订阅或查看邮件列表:

http://groups.google.com/group/mybatis-user

如果您认为已发现错误,请在创建新故障单之前先在用户列表中提出有关此问题的问题。如果发现错误或有新功能要求,则可以在GitHub上打开一个新版本:

https://github.com/mybatis/generator/issues

 

MyBatis Generator快速入门指南

MyBatis Generator(MBG)根据其配置方式生成不同样式的代码。这是通过在<context>配置元素上指定targetRuntime属性来控制的。下表总结了不同的选项。

要使用MyBatis Generator(MBG)快速启动并运行,请按照下列步骤操作:

  1. 适当地创建并填写配置文件(请参阅下面的示例)
  2. 将文件保存在某个方便的位置(例如\ temp \ generatorConfig.xml)
  3. 使用以下命令从命令行运行MBG:

 

      java -jar mybatis-generator-core-xxxjar -configfile \ temp \ generatorConfig.xml -overwrite

    

  1.  

这将告诉MBG使用您的配置文件运行。它还将告诉MBG覆盖具有相同名称的任何现有Java或Kotlin文件。如果要保存任何现有文件,请省略-overwrite参数。如果存在冲突,MBG将使用唯一名称(例如MyClass.java.1)保存新生成的文件。

  1.  
  2. 运行MBG之后,您将需要使用新生成的代码来创建或修改标准MyBatis配置。有关更多信息,请参见运行MyBatis Generator之后的 任务

目标运行时信息和样本

目标运行时间

注释

样本配置

MyBatis3DynamicSql

这是默认值

  • 生成Java代码
  • 不生成XML-MyBatis3批注仅用于
  • 生成的模型对象是“平面”的-没有单独的主键对象
  • 生成的代码取决于MyBatis动态SQL库。
  • 生成的代码量相对较小
  • 生成的代码为查询构造提供了极大的灵活性

样本配置

MyBatis3Kotlin

  • 生成Kotlin代码
  • 不生成XML-MyBatis3批注仅用于
  • 生成的模型对象是“平面”的-没有单独的主键对象
  • 生成的代码取决于MyBatis动态SQL库。
  • 生成的代码量相对较小
  • 生成的代码为查询构造提供了极大的灵活性

样本配置

MyBatis3

这是原始的运行时。在MBG 1.3.6版之前,MBG的大多数用法都使用这种样式的代码。

  • 生成Java代码
  • 生成不具有XML的MyBatis3兼容XML和SQL或MyBatis3兼容的带注释接口
  • 生成的模型对象可能具有一个层次结构,其中包含单独的主键对象和/或带有BLOB字段的单独对象
  • 生成的代码没有外部依赖关系
  • 生成的代码量非常大
  • 生成的代码具有有限的查询构造功能,并且难以扩展

样本配置

MyBatis3Simple

这是MyBatis3运行时的简化版本。

  • 生成Java代码
  • 生成不具有XML的MyBatis3兼容XML和SQL或MyBatis3兼容的带注释接口
  • 生成的模型对象是“平面”的-没有单独的主键对象
  • 生成的代码没有外部依赖关系
  • 生成的代码量相对较小
  • 没有生成“示例”或“选择性”方法
  • 生成的代码不包含用于动态查询构造的方法,并且很难扩展

样本配置

MyBatis3DynamicSql的示例配置

<!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="dsql" targetRuntime="MyBatis3DynamicSql">

    <jdbcConnection driverClass="org.hsqldb.jdbcDriver"

        connectionURL="jdbc:hsqldb:mem:aname" />

 

    <javaModelGenerator targetPackage="example.model" targetProject="src/main/java"/>

 

    <javaClientGenerator targetPackage="example.mapper" targetProject="src/main/java"/>

 

    <table tableName="FooTable" />

  </context>

</generatorConfiguration>

MyBatis3Kotlin的示例配置

<!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="kotlin" targetRuntime="MyBatis3Kotlin">

    <jdbcConnection driverClass="org.hsqldb.jdbcDriver"

        connectionURL="jdbc:hsqldb:mem:aname" />

 

    <javaModelGenerator targetPackage="example.model" targetProject="src/main/kotlin"/>

 

    <javaClientGenerator targetPackage="example.mapper" targetProject="src/main/kotlin"/>

 

    <table tableName="FooTable" />

  </context>

</generatorConfiguration>

MyBatis3的示例配置

<!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="myBatis3" targetRuntime="MyBatis3">

    <jdbcConnection driverClass="org.hsqldb.jdbcDriver"

        connectionURL="jdbc:hsqldb:mem:aname" />

 

    <javaModelGenerator targetPackage="example.model" targetProject="src/main/java"/>

 

    <sqlMapGenerator targetPackage="example.mapper" targetProject="src/main/resources"/>

 

    <javaClientGenerator type="XMLMAPPER" targetPackage="example.mapper" targetProject="src/main/java"/>

 

    <table tableName="FooTable" />

  </context>

</generatorConfiguration>

MyBatis3Simple的示例配置

<!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="simple" targetRuntime="MyBatis3Simple">

    <jdbcConnection driverClass="org.hsqldb.jdbcDriver"

        connectionURL="jdbc:hsqldb:mem:aname" />

 

    <javaModelGenerator targetPackage="example.model" targetProject="src/main/java"/>

 

    <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="example.mapper" targetProject="src/main/java"/>

 

    <table tableName="FooTable" />

  </context>

</generatorConfiguration>

运行MyBatis Generator

MyBatis Generator(MBG)可以通过以下方式运行:

每种方法在链接页面上都有详细说明。

注意:还有一个MBG的Eclipse插件,它增加了额外的功能-即与Eclipse的良好集成,启用Eclipse的Ant任务以及对Java文件自动合并的支持。有关 安装Eclipse插件的信息,请参见 MyBatis网站页面。

重要说明:当在Eclipse之类的IDE环境之外运行时,MBG解释所有XML配置中的targetProject和 targetPackage属性,如下所示:

  • 假定targetProject为现有目录结构。如果此目录结构不存在,MBG将失败。此规则有一个例外-当MBG通过Maven插件运行时。请参阅Maven插件页面,以获取有关如何在Maven中解释targetProject的信息。
  • targetPackage将转换为targetProject 目录结构的合适子目录结构。MBG将在必要时创建这些子目录。

使用Eclipse运行MyBatis Generator

安装Eclipse功能

eclipse功能可以通过以下任何一种方式安装:

  • 在Eclipse市场中搜索“ MyBatis Generator”,然后直接从市场中进行安装。您可以通过两种方式进入日食市场:
    1. 在正在运行的Eclipse实例中,选择菜单选项Help> Eclipse Marketplace ...
    2. 前往https://marketplace.eclipse.org/
  • 手动配置指向https://dl.bintray.com/mybatis/mybatis-generator的更新站点
  • 从GitHub发布页面(https://github.com/mybatis/generator/releases)下载压缩的eclipse更新站点,解压缩并配置指向您的解压缩目录的更新站点。

使用Eclipse功能

要在日食环境中使用MyBatis Generator快速启动并运行,请按照下列步骤操作:

  1. 创建一个Maven项目
    1. File>New>Other...
    2. Maven>Maven Project,然后按“Next
    3. 选择“ Create a simple project”,然后按“Next
    4. 填写Group IdArtifact IdNameDescription然后按“Finish
    5. 在pom.xml中添加MySQL和 ibatis jar包。

<dependencies>

<!-- https://mvnrepository.com/artifact/org.apache.ibatis/ibatis-core -->

<dependency>

<groupId>org.apache.ibatis</groupId>

<artifactId>ibatis-core</artifactId>

<version>3.0</version>

</dependency>

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.6</version>

</dependency>

</dependencies>

  1. 创建一个配置文件:
    1. 文件>新建>其他...
    2. 从“ MyBatis”类别中选择“ MyBatis Generator配置文件”,然后按“下一步”
    3. 指定文件的位置和文件名(默认为generatorConfig.xml)
    4. 完成向导
  2. 适当填写配置文件。至少必须指定:
    1. jdbcConnection信息,用于指定如何连接到目标数据库
    2. javaModelGenerator的目标包和目标项目
    3. sqlMapGenerator的目标包和目标项目
    4. javaClientGenerator的目标包,目标项目和类型(或者,如果您不想生成Java客户端,则可以删除javaClientGenerator元素)
    5. 至少一个数据库表
  3. 保存文件
  4. 右键单击Eclipse导航器或程序包浏览器中的配置文件,查看并选择菜单选项“ Run As> Run MyBatis Generator”

重要说明: Eclipse中的MyBatis Generator不会覆盖您对其生成的对象进行的任何自定义更改。您可以一遍又一遍地运行它,而不必担心丢失自定义更改。

MyBatis3Simple的MySQL5.7示例配置

<?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="myBatis3" targetRuntime="MyBatis3">

<jdbcConnection driverClass="com.mysql.jdbc.Driver"

connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"

password="123456" />

<javaModelGenerator

targetPackage="com.example.model"

targetProject="MyBatisGenerator/src/main/java" />

<sqlMapGenerator targetPackage="com.example.mapper"

targetProject="MyBatisGenerator/src/main/resources" />

<javaClientGenerator type="XMLMAPPER"

targetPackage="com.example.mapper"

targetProject="MyBatisGenerator/src/main/java" />

<table schema="blog" tableName="Blog">

<columnOverride column="id" property="id" />

</table>

</context>

</generatorConfiguration>

发布了362 篇原创文章 · 获赞 121 · 访问量 61万+

猜你喜欢

转载自blog.csdn.net/daqiang012/article/details/103800096