天天看點

Intellij idea中使用Mybatis Generator

Mybatis屬于半自動ORM,在使用這個架構中,工作量最大的就是書寫Mapping的映射檔案,由于手動書寫很容易出錯,我們可以利用Mybatis-Generator來幫我們自動生成檔案。

mybatis-generator是一款在使用mybatis架構時,自動生成model,mapper和mapper.xml的工具,很大程度上減少了業務開發人員的手動編碼時間

Mybatis-Generator官方文檔:http://www.mybatis.org/generator/

Mybatis-Generator的下載下傳可以到這個位址:https://github.com/mybatis/generator/releases

在IDEA中你可以在插件庫中找到安裝就好了

下面來介紹下使用方法

一、在pom.xml中添加plugin

<plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <dependencies>
                    <dependency>
                        <groupId> mysql</groupId>
                        <artifactId> mysql-connector-java</artifactId>
                        <version> 5.1.39</version>
                    </dependency>
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.5</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <!--允許移動生成的檔案 -->
                    <verbose>true</verbose>
                    <!-- 是否覆寫 -->
                    <overwrite>true</overwrite>
                    <!-- 自動生成的配置 -->
                    <configurationFile>
                        src/main/resources/mybatis-generator.xml</configurationFile>
                </configuration>
            </plugin>
           

configurationFile

是說明mybatis-generator的配置檔案的位置

在插件中要引入

mysql

mybatis.generator

的依賴,不然就要說明jar包的路徑了

假如不在plugin中加mysql的話啟動會包這樣的錯

Exception getting JDBC Driver: com.mysql.jdbc.Driver

也就是找不到mysql資料庫的驅動

二、mybatis-generator.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>
    <context id="MysqlTables" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自動生成的注釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>
        <!--資料庫連結位址賬号密碼-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/***"
                        userId="****"
                        password="****">
        </jdbcConnection>
        <!--資料庫類型和java類型的控制轉換-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--生成Model類存放位置-->
        <javaModelGenerator targetPackage="com.yidu.armedical.model.po" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--生成映射檔案存放位置-->
        <sqlMapGenerator targetPackage="com.yidu.armedical.mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!--生成Dao類存放位置-->
        <!-- 用戶端代碼,生成易于使用的針對Model對象和XML配置檔案 的代碼
                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對象
                type="MIXEDMAPPER",生成基于注解的Java Model 和相應的Mapper對象
                type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper接口
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.yidu.armedical.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!--生成對應表及類名-->
        <table tableName="product_model" domainObjectName="productModel" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>
           

<jdbcConnection>

用于配置mysql資料庫連接配接,需要路徑,驅動,資料庫使用者名和密碼。

<javaModelGenerator>

生成model實體類檔案位置

<sqlMapGenerator>

生成mapper.xml配置檔案位置

<javaClientGenerator>

生成mapper接口檔案位置

<table>

需要生成的實體類對應的表名,多個實體類複制多份該配置即可

可選:

1,

schema

:資料庫的schema;

2,

catalog

:資料庫的catalog;

3,

alias

:為資料表設定的别名,如果設定了alias,那麼生成的所有的SELECT SQL語句中,列名會變成:alias_actualColumnName

4,

domainObjectName

:生成的domain類的名字,如果不設定,直接使用表名作為domain類的名字;可以設定為somepck.domainName,那麼會自動把domainName類再放到somepck包裡面;

5,

enableInsert

(預設true):指定是否生成insert語句;

6,

enableSelectByPrimaryKey

(預設true):指定是否生成按照主鍵查詢對象的語句(就是getById或get);

7,

enableSelectByExample

(預設true):MyBatis3Simple為false,指定是否生成動态查詢語句;

8,

enableUpdateByPrimaryKey

(預設true):指定是否生成按照主鍵修改對象的語句(即update);

9,

enableDeleteByPrimaryKey

(預設true):指定是否生成按照主鍵删除對象的語句(即delete);

10,

enableDeleteByExample

(預設true):MyBatis3Simple為false,指定是否生成動态删除語句;

11,

enableCountByExample

(預設true):MyBatis3Simple為false,指定是否生成動态查詢總條數語句(用于分頁的總條數查詢);

12,

enableUpdateByExample

(預設true):MyBatis3Simple為false,指定是否生成動态修改語句(隻修改對象中不為空的屬性);

13,

modelType

:參考context元素的defaultModelType,相當于覆寫;

14,

delimitIdentifiers

:參考tableName的解釋,注意,預設的delimitIdentifiers是雙引号,如果類似MYSQL這樣的資料庫,使用的是(反引号,那麼還需要設定context的beginningDelimiter和endingDelimiter屬性)

15,

delimitAllColumns

:設定是否所有生成的SQL中的列名都使用辨別符引起來。預設為false,delimitIdentifiers參考context的屬性

三、到此為止,所有的配置已完畢。

方式一:使用idea的

maven helper

插件直接快速生成

image.png

方式二:在Intellij IDEA添加一個“Run運作”選項,使用

maven

運作

mybatis-generator-maven-plugin

插件 :

首先選擇配置edit configuration編輯結構

image.png

然後建立maven運作項

image.png

配置指令 mybatis-generator:generate -e

image.png

運作

image.png

運作成功

image.png

參考文章:

http://blog.csdn.net/liudongdong0909/article/details/51534735

http://www.jianshu.com/p/e09d2370b796