zoukankan      html  css  js  c++  java
  • MyBatis:MyBatis Generator的使用

    简述

    MyBatis Generator (简称 MBG)is a code generator for MyBatis. 可以根据数据库中的表生成相应的实体类以及一些常用的增删改查方法。

    使用 MBG 会生成以下三类文件:

    • Java POJOs that match the table structure
    • MyBatis/iBATIS Compatible SQL Map XML Files
    • Java client classes that make appropriate use of the above objects

    三类文件中又有一些小类,可以去 MBG 官网查看,重点说下第二类,第二类中生成的 XML 文件中,会有许多的 CRUD 的 SQL 语句,包括以下内容:

    • insert
    • update by primary key
    • update by example (using a dynamic where clause)
    • delete by primary key
    • delete by example (using a dynamic where clause)
    • select by primary key
    • select by example (using a dynamic where clause)
    • count by example

    上面这些 SQL 也会随着表的结构发生一些变化。例如假如某张表没有主键,那么就不会生成 update by primary 系列的 SQL 语句。

    运行

    MBG 有个核心配置文件 generatorConfig.xml 和一个 jar 包 mybatis-generator-core-x.x.x.jar,在命令行运行

    java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml -overwrite

    这个命令的作用是启动 jar 读取 xml 中的配置文件,配置文件有数据库的驱动存放位置,连接到数据库的信息,需要读取那些表格,生成的文件存放在那些位置,等等这些信息,然后生成相应的代码等文件放到指定位置。

    上面这个 mybatis-generator-core-x.x.x.jar 文件的下载地址是:https://github.com/mybatis/generator/releases

    官方文档中介绍了运行 MBG 的方式有五种:命令行方式,通过 Ant,通过 Maven,通过 Java 代码,通过 Eclipse 插件。

    命令行方式也就是上面说的那种,其它四种原理也和命令行方式差不多。

    实战

    首先创建一个 spring boot 项目,添加 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="D:developsoftwarepostgresql-42.2.5.jar"/>
    
        <context id="DB2Tables" targetRuntime="MyBatis3">
    
            <jdbcConnection driverClass="org.postgresql.Driver"
                            connectionURL="jdbc:postgresql://localhost:5432/postgres"
                            userId="postgres"
                            password="123456">
            </jdbcConnection>
    
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <javaModelGenerator targetPackage="com.company.laboratory.model"
                                targetProject="D:developidea-workspacelaboratorysrcmainjava">
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <sqlMapGenerator targetPackage="com.company.laboratory.mapper"
                             targetProject="D:developidea-workspacelaboratorysrcmain
    esources">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
    
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.company.laboratory.mapper"
                                 targetProject="D:developidea-workspacelaboratorysrcmainjava">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <table tableName="t_project_specific_budget" domainObjectName="ProjectSpecificBudget">
            </table>
    
        </context>
    </generatorConfiguration>
    View Code

    目录结构如下图

    需要额外添加的文件是数据库的驱动文件,我这里使用的 postgresql ,驱动文件的位置在 generatorConfig.xml 中 classPathEntry 中配置了。

    然后命令行执行 java -jar mybatis-generator-core-1.3.7.jar -configfile generatorConfig.xml

    即可生成相应的文件,生成后的文件目录如下:

    如上图,新生成的文件已经用红框标出了。

    上面的 generatorConfig.xml 文件配置仍然存在许多问题,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>
        <classPathEntry location="D:developsoftwarepostgresql-42.2.5.jar"/>
    
        <context id="DB2Tables" targetRuntime="MyBatis3">
    
    
            <commentGenerator>
                <!-- 是否去除自动生成的注释 -->
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
    
            <jdbcConnection driverClass="org.postgresql.Driver"
                            connectionURL="jdbc:postgresql://localhost:5432/postgres"
                            userId="postgres"
                            password="123456">
            </jdbcConnection>
    
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <javaModelGenerator targetPackage="com.company.laboratory.model"
                                targetProject="D:developidea-workspacelaboratorysrcmainjava">
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <sqlMapGenerator targetPackage="com.company.laboratory.mapper"
                             targetProject="D:developidea-workspacelaboratorysrcmain
    esources">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
    
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.company.laboratory.mapper"
                                 targetProject="D:developidea-workspacelaboratorysrcmainjava">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <table tableName="t_table" domainObjectName="table"
                   enableCountByExample="false"
                   enableUpdateByExample="false"
                   enableDeleteByExample="false"
                   enableSelectByExample="false"
                   selectByExampleQueryId="false"
            />
    
        </context>
    </generatorConfiguration>
    View Code

     根据自己的项目稍微修改一下文件位置就可以使用了。

    遇到这样一个问题 mybatis generator自动生成代码时,只生成了insert 而没有其他的,经过排查是因为表中没有设置主键。

    参考:

    MBG 官网:http://mybatis.org/generator/index.html

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

  • 相关阅读:
    Win10 安装 Oracle32bit客户端 提示:引用数据不可用于验证此操作系统分发的先决条件
    ORACLE 拆分逗号分隔字符串函数
    PLSQL 中文乱码
    不要把分层当做解耦!
    MySQL 迁移到 PG 怎么做
    在 MySQL 创造类似 PipelineDB 的流视图(continuous view)
    TeamViewer 的替代品 ZeroTier + NoMachine
    所有 HTML attribute
    使用PG的部分索引
    基于 500 份标注数据用深度学习破解验证码
  • 原文地址:https://www.cnblogs.com/colin220/p/11694261.html
Copyright © 2011-2022 走看看