1. 引入插件
<build><finalName>demo</finalName><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><dependencies><!-- oracle的jdbc驅動包,如果使用其他數據庫,則不需要-->
<!-- <dependency>-->
<!-- <groupId>com.oracle.database.jdbc</groupId>-->
<!-- <artifactId>ojdbc8</artifactId>-->
<!-- <version>19.3.0.0</version>-->
<!-- </dependency>--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!-- 集成MBG插件 --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.4.2</version></dependency><!-- 集成MBG的lombok插件 --><dependency><groupId>com.softwareloop</groupId><artifactId>mybatis-generator-lombok-plugin</artifactId><version>1.0</version></dependency></dependencies><configuration><!-- mybatis用于生成代碼的配置文件 --><configurationFile>src/main/resources/generatorConfig.xml</configurationFile><verbose>true</verbose><overwrite>true</overwrite></configuration></plugin></plugins></build>
2. 編寫MBG文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!--第二行引入爆紅,說明沒有導入mybatis-generator-core的依賴,導入后刷新maven-->
<generatorConfiguration><!--導入屬性配置--><!-- context 是逆向工程的主要配置信息 --><!-- id:name --><!-- targetRuntime:設置生成的文件適用于那個 mybatis 版本 --><context id="default" targetRuntime="MyBatis3"><!-- 生成的 Java 文件的編碼 --><property name="javaFileEncoding" value="UTF-8"/><!-- plugin元素 得在 property下面 commentGenerator上面--><plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin"><property name="searchString" value="Example$" /><property name="replaceString" value="Criteria" /></plugin><!--自動實現序列化接口 --><plugin type="org.mybatis.generator.plugins.SerializablePlugin" /><!--生成toString方法 -->
<!-- <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />--><!--生成equals和hashCode方法 -->
<!-- <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />--><plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" /><!--整合lombok --><plugin type="com.softwareloop.mybatis.generator.plugins.LombokPlugin"><property name="annotations" value="Data, NoArgsConstructor, AllArgsConstructor"/></plugin><!-- optional,旨在創建class時,對注釋進行控制 --><commentGenerator><!-- 添加db表中字段的注釋 --><property name="addRemarkComments" value="true"/><!-- 是否生成注釋代時間戳 --><property name="suppressDate" value="false"/><!-- 是否取消自動生成的注釋 --><property name="suppressAllComments" value="false"/></commentGenerator><!--jdbc的數據庫連接 URL后加的參數可以減少報錯,&連接需要做轉義,SSL版本高需要聲明--><jdbcConnectiondriverClass="com.mysql.jdbc.Driver"connectionURL= "jdbc:mysql://localhost:3306/demo?characterEncoding=utf8&useSSL=false"userId= "root"password= "root" ><!-- 啟用INFORMATION_SCHEMA獲取表結構 --><property name="useInformationSchema" value="true"/><!-- 可選:指定數據庫schema(如MySQL的庫名、PostgreSQL的schema名) --><property name="schema" value="demo"/></jdbcConnection><!-- 非必需,類型處理器,在數據庫類型和java類型之間的轉換控制--><javaTypeResolver><!-- 是否使用 BigDecimal 映射 DECIMAL 和 NUMERIC 類型true: 映射為 java.math.BigDecimalfalse: 映射為 Integer(如果精度為0)或 Double(默認) --><property name="forceBigDecimals" value="false"/><!-- 是否使用 JSR-310 日期類型(Java 8+ 的 LocalDate、LocalDateTime 等)true: 數據庫 DATE → LocalDate,DATETIME → LocalDateTimefalse: 映射為 java.util.Date(默認) --><property name="useJSR310Types" value="true"/></javaTypeResolver><!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類targetPackage 指定生成的model生成所在的包名targetProject 指定在該項目下所在的路徑--><!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">--><javaModelGenerator targetPackage="module" targetProject="./src/main/java"><!-- 是否允許子包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="false"/><!-- 是否對model添加 構造函數,如果為true則不會生成ResultMap --><property name="constructorBased" value="false"/><!-- 是否對類CHAR類型的列的數據進行trim操作 --><property name="trimStrings" value="true"/><!-- 建立的Model對象是否 不可改變 即生成的Model對象不會有 setter方法,只有構造方法 --><property name="immutable" value="false"/></javaModelGenerator><!--mapper映射文件生成所在的目錄 為每一個數據庫的表生成對應的SqlMap文件 --><!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">--><sqlMapGenerator targetPackage="mybatis/mappers" targetProject="./src/main/resources"><property name="enableSubPackages" value="false"/></sqlMapGenerator><!-- 客戶端代碼,生成易于使用的針對Model對象和XML配置文件 的代碼type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對象type="MIXEDMAPPER",生成基于注解的Java Model 和相應的Mapper對象type="XMLMAPPER",生成SQLMap XML文件和獨立的Mapper接口--><!-- targetPackage:mapper接口dao生成的位置 --><!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">--><javaClientGenerator type="XMLMAPPER" targetPackage="dao" targetProject="./src/main/java"><!-- enableSubPackages:是否讓schema作為包的后綴 --><property name="enableSubPackages" value="false" /></javaClientGenerator><!--生成的表--><!--domainObjectName:生成的domain類的名字,如果不設置,直接使用表名作為domain類的名字;可以設置為somepck.domainName,那么會自動把domainName類再放到somepck包里面;--><!--enableInsert(默認true):指定是否生成insert語句;--><!--enableSelectByPrimaryKey(默認true):指定是否生成按照主鍵查詢對象的語句(就是getById或get);--><!--enableSelectByExample(默認true):MyBatis3Simple為false,指定是否生成動態查詢語句;--><!--enableUpdateByPrimaryKey(默認true):指定是否生成按照主鍵修改對象的語句(即update);--><!--enableDeleteByPrimaryKey(默認true):指定是否生成按照主鍵刪除對象的語句(即delete);--><!--enableDeleteByExample(默認true):MyBatis3Simple為false,指定是否生成動態刪除語句;--><!--enableCountByExample(默認true):MyBatis3Simple為false,指定是否生成動態查詢總條數語句(用于分頁的總條數查詢);--><!--enableUpdateByExample(默認true):MyBatis3Simple為false,指定是否生成動態修改語句(只修改對象中不為空的屬性);--><table tableName="user" domainObjectName="User"enableCountByExample="false"enableUpdateByExample="false"enableDeleteByExample="false"enableSelectByExample="false"selectByExampleQueryId="false"></table></context>
</generatorConfiguration>
3. 執行
mybatis-generator:generate -e
或idea右側雙擊Maven下的Plugins的mybatis-generator:generate
Reference:
IDEA自動生成Mapper和實體文件