MyBatis Generator系列之一:概述

MyBatis Generator

文中内容翻译自官方文档

MyBatis Generator简介

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

MyBatis Generator 生成的工件

MBG根据配置方式,为不同的语言生成不同样式的代码。例如,MBG可以生成Java或Kotlin代码。而且MBG可以生成与MyBatis3兼容的XML—尽管现在它被认为是MBG的遗留使用。新样式的生成代码不需要XML。

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

  • 与表结构匹配的Java或Kotlin类。这可能包括:

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

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

  • 在某些情况下,MBG将生成与MyBatis3兼容的SQL映射XML文件。MBG为配置中的每个表上的简单CRUD方法生成SQL。生成的SQL语句包括:

    • 插入
    • 按主键更新
    • example 更新(使用动态where子句)
    • 按主键删除
    • 通过example删除(使用动态where子句)
    • 按主键查询
    • example查询(使用动态where子句)
    • example统计计数
  • Java或Kotlin客户端类、接口和Kotlin扩展方法,它们适当地使用了上述对象。客户端类的生成是可选的。MBG将生成一个与MyBatis 3.x映射器基础设施一起工作的映射器接口

重复运行MyBatis Generator需要注意的问题

在迭代开发环境中,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,则必须手动合并更改。

依赖

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

运行MyBatis Generator的方式

MyBatis生成器(MBG)可以通过以下方式运行:

  • 从带有XML配置的命令行终端
  • 作为一个带有XML配置的Ant任务
  • 作为Maven插件
  • 作为另一个具有XML配置的Java程序
  • 作为另一个基于Java的配置的Java程序
  • 作为Eclipse特性

大部分内容翻译自

http://mybatis.org/generator/index.html

mybatis也能方向生成代码,能方向生成实体类(po)、mapper接口和Mapper接口映射文件,能减少我们代码的工作量。详细步骤如下 1、下载mybatis生成架包工具MyBatis_Generator_1.3.1.zip,解压架包把features、plugins文件夹下的架包分别拷贝到eclipse安装目录下的features、plugins文件夹。重启eclipse就行。 解压后图片如下: Eclipse路径如图: 拷贝替换如图: 2、创建generatorConfig.xml文件,安装好mybatis 就能创建generatorConfig.xml 3、配置generatorConfig.xml配置文件,详细如下 [html] view plain copy <?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> <!-- <classPathEntry location="D:\\rep\\mysql\\mysql-connector-java\\5.1.19\\mysql-connector-java-5.1.19.jar" /> --> <classPathEntry location="D:\\repo\\com\\oracle\\ojdbc14\\10.2.0.1.0\\ojdbc14-10.2.0.1.0.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true" /> <property name="suppressDate" value="true" /> </commentGenerator> <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:orcl4" userId="xxx" password="xxxx" /> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> </javaTypeResolver> <javaModelGenerator targetPackage="com.pcmall.domain.sale.order" targetProject="pos-service/src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="mybatis.mapper.sale.order" targetProject="pos-service/src/main/resources"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <javaClientGenerator targetPackage="com.pcmall.dao.sale.order" targetProject="pos-service/src/main/java" type="XMLMAPPER"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <table tableName="hs_zxzflx" enableSelectByExample="false" enableDeleteByExample="false" enableCountByExample="false" selectByExampleQueryId="true" enableUpdateByExample="false"> <!-- <generatedKey column="ID" sqlStatement="oracle" identity="true" /> --> </table> </context> </generatorConfiguration> 4、右击generatorConfig.xml 点击Generate MyBatis/iBATIS Artifacts 生成对应接口、接口映射文件、实体类 5、查看结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值