MyBatis Generator使用示例

一.MBG介紹

MyBatis Generator(MBG)是一個Mybatis的代碼生成器,它能夠用來生成能夠訪問(多個)表的基礎對象。MBG解決了對數據庫操做有最大影響的一些簡單的CRUD(插入,查詢,更新,刪除)操做。MyBatis Generator 會生成:匹配表結構的Java POJO;MyBatis兼容SQL映射XML文件;Mapper接口類。java

 

二.配置示例

MySQL數據庫建立用戶表(tb_user),建表語句mysql

複製代碼

CREATE TABLE `spring`.`tb_user` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(45) NOT NULL,
  `password` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`))
DEFAULT CHARACTER SET = utf8;

複製代碼

配置數據庫鏈接,建立resources/mybatis/db.propertiesspring

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://172.17.0.2:3306/spring
jdbc.username=root
jdbc.password=password

配置mybatis generator,建立resources/mybatis/generatorConfig.xmlsql

複製代碼

<?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/db.properties"/>

    <!-- 指定數據庫驅動jar地址,能夠pom.xml中設置 -->
    <!--<classPathEntry location="${user.home}/.m2/repository/mysql/mysql-connector-java/5.1.44/mysql-connector-java-5.1.44.jar"/>-->

    <!-- 配置環境
     defaultModelType:指定生成模型類型策略
     1.conditional:這是默認值,這個模型和下面的hierarchical相似,除了若是那個單獨的類將只包含一個字段,將不會生成一個單獨的類。 所以,若是一個
     表的主鍵只有一個字段,那麼不會爲該字段生成單獨的實體類,會將該字段合併到基本實體類中。
     2.flat:該模型爲每一張表只生成一個實體類。這個實體類包含表中的全部字段。
     3.hierarchical:若是表有主鍵,那麼該模型會產生一個單獨的主鍵實體類,若是表還有BLOB字段, 則會爲表生成一個包含全部BLOB字段的單獨的實體類,然
     後爲全部其餘的字段生成一個單獨的實體類。 MBG會在全部生成的實體類之間維護一個繼承關係。 -->
    <context id="mysql" defaultModelType="flat">

        <!-- 是否取消註釋 -->
        <commentGenerator>
            <property name="suppressAllComments"  value="true"/>
        </commentGenerator>

        <!-- jdbc鏈接 -->
        <jdbcConnection driverClass="${jdbc.driverClassName}"
                        connectionURL="${jdbc.url}"
                        userId="${jdbc.username}" password="${jdbc.password}"/>

        <!-- 生成實體類 -->
        <javaModelGenerator targetPackage="com.learn.spring.server.model"
                            targetProject="src/main/java"/>

        <!-- 生成maper.xml文件 -->
        <sqlMapGenerator targetPackage="mybatis/mapper"
                         targetProject="src/main/resources"/>

        <!-- 生成dao接口 -->
        <javaClientGenerator targetPackage="com.learn.spring.server.dao"
                             targetProject="src/main/java" type="XMLMAPPER"/>

        <!-- 配置表信息,不生成幫助類examples-->
        <table schema="" tableName="tb_user" domainObjectName="UserDO"
               enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false"/>
    </context>
</generatorConfiguration>

複製代碼

Maven配置MyBatis Generator,編輯pom.xml數據庫

複製代碼

<plugins>
            <!-- MyBatis Generator -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <!-- 指定jdbc驅動,能夠generatorConfig.xml中設置 -->
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.44</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <!-- 打印執行過程 -->
                    <verbose>true</verbose>
                    <!-- 容許覆蓋生成的文件 -->
                    <overwrite>true</overwrite>
                    <!-- 配置文件路徑 -->
                    <configurationFile>${basedir}/src/main/resources/mybatis/generatorConfig.xml</configurationFile>
                    <!-- 生成部分mapper,指定table名字 -->
                    <tableNames>
                        tb_user
                    </tableNames>
                </configuration>
            </plugin>
        </plugins>

複製代碼

 

三.執行驗證

執行mvn mybatis-generator:generate,生成UserDOMapper.java、UserDO.java、UserDOMapper.xml,插件執行成功。mybatis

 

四.<table>元素經常使用屬性

該元素至少要配置一個,能夠配置多個,該元素用來配置要經過內省的表,只有配置的纔會生成實體類和其餘文件。
該元素有一個必選屬性app

tableName:指定要生成的表名,可使用SQL通配符匹配多個表,如:<table tableName="%" />dom

該元素包含多個可選屬性:maven

schema:數據庫的schema,可使用SQL通配符匹配。設置後,生成SQL的表名會變成如schema.tableName的形式。
catalog:數據庫的catalog,若是設置了該值,生成SQL的表名會變成如catalog.tableName的形式。
alias:若是指定,這個值會用在生成的select查詢SQL的表的別名和列名上,列名會被別名爲alias_actualColumnName這種模式。
domainObjectName:生成對象的基本名稱,若是沒有指定,MBG會自動根據表名來生成名稱。
enableXXX:XXX表明多種SQL方法,該屬性用來指定是否生成對應的XXX語句。
modelType:和<context>的defaultModelType含義同樣,這裏能夠針對表進行配置,這裏的配置會覆蓋<context>的defaultModelType配置。
escapeWildcards:這個屬性表示當查詢列,是否對schema和表名中的SQL通配符('_' and '%')進行轉義,默認false。
delimitIdentifiers:是否給標識符增長**分隔符**,默認false。當catalog,schema或tableName中包含空白時,默認true。
delimitAllColumns:是否對全部列添加**分隔符**,默認false。ide

除了<property>子元素外,<table>還包含如下子元素

<generatedKey> (0個或1個):用來指定自動生成主鍵的屬性,若是指定這個元素,MBG在生成insert的SQL映射文件中插入一個<selectKey>元素。也就是數據庫自增後若是須要知道值,就用這個,這個是將自增結果回填到對象中。 <columnRenamingRule> (0個或1個):用來在MBG生成列以前,對列進行重命名。對於存在同一前綴的字段想在生成屬性名時去除前綴的表很是有用。 <columnOverride> (0個或多個):用來修改表中某個列的屬性(屬性名、數據類型),MBG會使用修改後的列來生成domain的屬性。 <ignoreColumn> (0個或多個):用來屏蔽不須要生成的列。

相關文章
相關標籤/搜索