使用mybatis-generator在自動生成Model類和Mapper文件

  使用mybatis-generator插件能夠很輕鬆的實現mybatis的逆向工程,即,能經過表結構自動生成對應的java類及mapper文件,能夠大大提升工做效率,而且它提供了不少自定義的設置能夠應對不一樣的需求,最近作公司新開的一個項目就是使用到了它,簡單粗暴.java

  下面介紹詳細的使用步驟和注意事項,個人項目環境是idea+maven+ssm,可是我新建了一個空的maven項目專門用來生成java代碼,而後再把它有選擇的copy到本身的項目環境中.mysql

  1.新建一個空的webapp類型的maven項目.web

  2.在pom.xml文件中加入mybatis-generator插件的配置:sql

<build>
    <plugins>
      <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.2</version>
        <configuration>
          <verbose>true</verbose>
          <overwrite>true</overwrite>
        </configuration>
      </plugin>
    </plugins>
</build>

  3.在resources包下新建一個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>
    <!-- 指定數據庫驅動的地址 這是我mac下的絕對路徑-->
    <classPathEntry location="/Users/wyg/personal/視頻教程/generatorSqlmapCustom/lib/mysql-connector-java-5.1.28-bin.jar" />
    <!--一個數據庫 對應一個context-->
    <!--
    context:生成一組對象的環境
    id:必選,上下文id,用於在生成錯誤時提示
    defaultModelType:指定生成對象的樣式
        1,conditional:相似hierarchical;
        2,flat:全部內容(主鍵,blob)等所有生成在一個對象中;
        3,hierarchical:主鍵生成一個XXKey對象(key class),Blob等單獨生成一個對象,其餘簡單屬性在一個對象中(record class)
    targetRuntime:
        1,MyBatis3:默認的值,生成基於MyBatis3.x以上版本的內容,包括XXXBySample;
        2,MyBatis3Simple:相似MyBatis3,只是不生成XXXBySample;
    introspectedColumnImpl:類全限定名,用於擴展MBG
-->
    <context id="testTables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--數據庫鏈接的信息:驅動類、鏈接地址、用戶名、密碼 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/shop" userId="root"
            password="123">
        </jdbcConnection>
        <!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析爲 Integer,爲 true時把JDBC DECIMAL 和 
            NUMERIC 類型解析爲java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- targetProject:生成PO類的位置 -->
        <javaModelGenerator targetPackage="com.ximalaya.shop.data1"
            targetProject="src/main/java" >
            <!-- enableSubPackages:是否讓schema做爲包的後綴 -->
            <property name="enableSubPackages" value="false" />
            <!-- 從數據庫返回的值被清理先後的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="com.ximalaya.shop.mapper1"
            targetProject="src/main/java">
            <!-- enableSubPackages:是否讓schema做爲包的後綴 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <!-- 客戶端代碼,生成易於使用的針對Model對象和XML配置文件 的代碼
                type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper對象
                type="MIXEDMAPPER",生成基於註解的Java Model 和相應的Mapper對象
                type="XMLMAPPER",生成SQLMap XML文件和獨立的Mapper接口
        -->
        <javaClientGenerator type="ANNOTATEDMAPPER"
            targetPackage="com.ximalaya.shop.mapper1"
            targetProject="src/main/java">
            <!-- enableSubPackages:是否讓schema做爲包的後綴 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 指定數據庫表 -->
        <table schema="" tableName="tb_order">
            <property name="modelOnly" value="false"/>
        </table>
        <table schema="" tableName="tb_order_product">
            <property name="modelOnly" value="false"/>
        </table>
        <table schema="" tableName="tb_order_status">
            <property name="modelOnly" value="false"/>
        </table>
    </context>
</generatorConfiguration>

  這裏須要注意的有兩點,第一個就是配置好本身的數據庫驅動,我原本將mysql-connector-java-5.1.28-bin.jar直接引入到項目中,而後就忽略了這個標籤,可是運行失敗,找不到數據庫驅動,而後我加上該標籤,指向文件中的mysql-connector-java-5.1.28-bin.jar的絕對路徑,就行了.第二個就是javaClientGenerator標籤裏的type,在註釋中有詳細解釋,這裏能夠根據你實際的需求生成不一樣類型的java代碼.mybatis

  配置完以後,直接在當前項目下輸入命令行:mvn mabatis-generator:generate,注意個人項目名稱是shopTest因此在該目錄下運行.app

  

  若是能看到BUILD SUCCESS,那就證實操做成功了,去你指定的src目錄下查看生成的代碼便可.webapp

相關文章
相關標籤/搜索