1. 程式人生 > >MyBatis Generator元件學習(反向生成) - 20181126

MyBatis Generator元件學習(反向生成) - 20181126

一.引言

  • MyBatis-Plus(簡稱MP)是MyBatis增強工具,在原來基礎上不做改變,為簡化開發、提高效率而生。
  • MyBatis Generator 是MyBatis 官方出品的一款,用來自動生成MyBatis的 mapper、dao、entity 的框架,讓我們省去規律性最強的一部分最基礎的程式碼編寫。
  • 使用方式:命令列、Maven、Ant任務、Java程式碼;推薦Maven,因為整合和使用簡單

二.使用示例

  1. 新增依賴
    配置pom.xml檔案,增加依賴和配置生成檔案(“generatorConfig.xml” 個性化配置)路徑
    依賴:
    org.mybatis.generator:根據資料庫中的表 反向生成實體,dao,mapper(也可使用oracle驅動)
<!-- mybatis-generator-core 反向生成java程式碼-->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.5</version>
    </dependency>

外掛:
注意,如果本地庫中沒有驅動jar包,需要先放到依賴下載,再挪到外掛下邊

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <
artifactId
>
mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> </dependencies> <configuration> <!--允許移動生成的檔案 --> <verbose>true</verbose> <!-- 是否覆蓋 --> <overwrite>true</overwrite> <!-- 自動生成的配置、配置檔案的路徑 --> <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile> </configuration> </plugin>
  1. 新增配置檔案
    根據上面在pom裡的配置,我們需要新增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:\maven\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/>-->

    <context id="mysql" targetRuntime="MyBatis3">
        <!--自動生成一些東西hashcode、序列化、tostring-->
        <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin>
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>

        <commentGenerator>
            <!--是否支援日期格式 -->
            <property name="suppressDate" value="true"/>
            <!--是否去除自動生成註釋 true關閉自動生成註釋 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--資料庫連結地址賬號密碼-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/abc"
                        userId="root"
                        password="root"></jdbcConnection>

        <!--java型別解析,用於一些比較特殊的資料型別-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!--生成Model類存放位置包名和位置(生成實體類的包)-->
        <javaModelGenerator targetPackage="com.abc.entity" targetProject="./src/main/java">
            <!--是否合併包:類和包建立聯絡-->
            <property name="enableSubPackages" value="true"/>
            <!--去String型別中的空格-->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--生成對映檔案存放位置(生成mapper.xml檔案)-->
        <sqlMapGenerator targetPackage="com.abc.mapper" targetProject="./src/main/java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--生成Dao類存放位置(生成dao介面,其實dao介面也稱mapper)-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.abc.dao"
                             implementationPackage="com.abc.mapper" targetProject="./src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--生成對應表及類名-->
        <!--
            是否生成enableCountByExample  查詢條數
            是否生成根據條件更新 enableUpdateByExample="false"
             enableDeleteByExample="false"
             enableSelectByExample="false"
             selectByExampleQueryId="false"
        -->
        <!--生成哪些表、生成的實體類名稱名,多個表就多個table-->
        <table tableName="abc_admin" domainObjectName="Admin"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">

        </table>
    </context>
</generatorConfiguration>
  1. 啟動外掛
    右側的Maven中,Pligins — mybatis-generator — 啟動 bulidsuccess
  2. 生成的介面內容
public interface AdminMapper {
    //根據id刪除
    int deleteByPrimaryKey(String id);

    //插入(空插入為null)
    int insert(Admin record);
    //插入(空則不插入)
    int insertSelective(Admin record);

    //根據id查一個
    Admin selectByPrimaryKey(String id);

    //根據id修改(null則不會修改)
    int updateByPrimaryKeySelective(Admin record);
    //根據id修改(null也會修改)
    int updateByPrimaryKey(Admin record);

    //注意:官方不提供查詢所有操作
}

三.其他補充

  • 設定實體和表的欄位對映(起別名)
<table標籤中加:
<!--起別名:列名,實體屬性名(自定義成駝峰命名)-->
            <columnOverride column="" property=""/>
  • MyBatis通用mapper開發,對mybatis進一步封裝【 https://www.oschina.net/news/94347/mapper-4-0-released
  • 建議安裝一款免費的IDEA外掛“Free MyBatis plugin”,可以實現dao到mapper xml對應方法的快速對映,點選任意一個快速調整到相應的方法,提高工作效率。(綠色箭頭,對應跳轉)