我是靠谱客的博主 怡然镜子,最近开发中收集的这篇文章主要介绍Mybatis代码生成器Mybatis-Generator使用详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.Mybatis-Generator说明

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

MBG 生成不同风格和不同语言的代码,这取决于它的配置方式。例如,MBG 可以生成 Java 或 Kotlin 代码。MBG 可以生成与 MyBatis3 兼容的 XML - 尽管现在被认为是 MBG 的遗留用途。生成代码的较新样式不需要 XML。

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

与表结构匹配的 Java 或 Kotlin 类。这可能包括:
匹配表主键的类(如果有主键)
匹配表的非主键字段的类(BLOB 字段除外)
一个包含表的 BLOB 字段的类(如果表有 BLOB 字段)
启用动态选择、更新和删除的类
这些类之间有适当的继承关系。请注意,生成器可以配置为生成不同类型的 POJO 层次结构 - 例如,如果您愿意,您可以选择为每个表生成单个域对象。

在某些情况下,MBG 会生成 MyBatis3 Compatible SQL Map XML Files。MBG 为配置中的每个表上的简单 CRUD 函数生成 SQL。生成的 SQL 语句包括:
插入
按主键更新
示例更新(使用动态 where 子句)
按主键删除
删除示例(使用动态 where 子句)
按主键选择
按示例选择(使用动态 where 子句)
举例数
根据表的结构,这些语句有不同的变体(例如,如果表没有主键,则 MBG 不会通过主键函数生成更新)。

适当使用上述对象的 Java 或 Kotlin 客户端类、接口和 Kotlin 扩展方法。客户端类的生成是可选的。MBG 将生成一个与 MyBatis 3.x 映射器基础设施配合使用的映射器接口
MyBatis 生成器旨在在迭代开发环境中良好运行,并且可以作为 Ant 任务或 Maven 插件包含在持续构建环境中。迭代运行 MBG 时需要注意的重要事项包括:

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

官网文档:http://mybatis.org/generator/

2.引入插件

Mybatis-Generator的运行方式有很多种:

基于mybatis-generator-core-x.x.x.jar和其XML配置文件,通过命令行运行。
通过Ant的Task结合其XML配置文件运行。
通过Maven插件运行。
通过Java代码和其XML配置文件运行。
通过Java代码和编程式配置运行。
通过Eclipse Feature运行。
这里只介绍通过Maven插件运行和通过Java代码和其XML配置文件运行这两种方式,两种方式有个特点:都要提前编写好XML配置文件。个人感觉XML配置文件相对直观,后文会花大量篇幅去说明XML配置文件中的配置项及其作用。这里先注意一点:默认的配置文件为ClassPath:generatorConfig.xml。

3.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>
    <classPathEntry
            location="C:/Oracle/Middleware/wlserver_10.3/server/lib/ojdbc6.jar"/>
    <context id="my" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="false"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
                        connectionURL="jdbc:oracle:thin:@172.20.16.***:1521:CARGO" userId="***"
                        password="***"/>

        <javaModelGenerator targetPackage="ctas.test.entity"
                            targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="ctas.test.entity.xml"
                         targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <javaClientGenerator targetPackage="ctas.test.mapper"
                             targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--<table tableName="T_FEE_AGTBILL" domainObjectName="FeeAgentBill"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false"/>-->

        <table tableName="CTAS_FEE_BASE" domainObjectName="FeeBase"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
            <!--<columnRenamingRule searchString="^D_"
                                replaceString=""/>-->
        </table>

    </context>
</generatorConfiguration>

要点说明:

a) 因为生成过程中需要连接db,所以第3行指定了驱动jar包的位置

b) 15-17行为连接字符串

c) 19-33行指定生成“entity实体类、mybatis映射xml文件、mapper接口”的具体位置

d) 40-46行为具体要生成的表,如果有多个表,复制这一段,改下表名即可

4.代码生成示例

这里我们用命令行的方式来生成代码,这里有几个小技巧分享给大家:

  1. 建表时,字段名称建议用"_"分隔多个单词,比如:AWB_NO、REC_ID…,这样生成的entity,属性名称就会变成漂亮的驼峰命名,即:awbNo、recId

2)oracle中,数值形的字段,如果指定精度,比如Number(12,2),默认生成entity属性是BigDecimal型 ,如果不指定精度,比如:Number(9),指默认生成的是Long型

3)oracle中的nvarchar/nvarchar2,mybatis-generator会识别成Object型,建议不要用nvarchar2,改用varchar2

a) 在generatorConfig.xml文件目录下,加上两个jar包mybatis-generator-core-1.3.2.jar,mysql-connector-java-8.0.13.jar。第一个jar包是命令的驱动jar包,版本自己选择,第二个jar包是数据库连接的jar包,因为我们在generatorConfig.xml文件配置了连接数据库,所以我们需要连接数据库的jar包,第二个jar包的版本要跟在generatorConfig.xml中配置的驱动的版本匹配。
b) 准备生成代码的目录,因为我们在generatorConfig.xml中已经配置了生成代码的目录,所以我们要先准备生成代码的目录src/main/java,src/main/resources
在这里插入图片描述

一定要在generatorConfig.xml的目录下准备生成代码的目录,以及两个jar包。
在这里插入图片描述

C) 在这个目录下启动命令行

在这里插入图片描述
在这里插入图片描述
输入命令 java –jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml 命令
在这里插入图片描述

d) 生成的代码

在这里插入图片描述
在这里插入图片描述

最后

以上就是怡然镜子为你收集整理的Mybatis代码生成器Mybatis-Generator使用详解的全部内容,希望文章能够帮你解决Mybatis代码生成器Mybatis-Generator使用详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部