由于表對象在開發過程中會增刪字段,有時候需要重新生成實體和對應的mapper,這時候可以通過mybatis的插件的生成。
優點是快速簡潔,缺點同樣很明顯:覆蓋。因此,通常是在第一次搭建框架的時候使用,因為開發過程中實體的字段會被修改,如添加注解validator、format等。所以架構師學會用包裝對象?包裝對象怎么實現在原始表的屬性的控制呢,比如日期格式化,比如校驗。
1.首先,在pom中依賴插件:
1 <!-- Mybatis generator代碼生成插件 配置 --> 2 <plugin> 3 <groupId>org.mybatis.generator</groupId> 4 <artifactId>mybatis-generator-maven-plugin</artifactId> 5 <version>${plugin.mybatis.generator}</version> 6 <configuration> 7 <configurationFile>${mybatis.generator.generatorConfig.xml}</configurationFile> 8 <overwrite>true</overwrite> 9 <verbose>true</verbose> 10 </configuration> 11 </plugin>
1 <properties> 2 <!-- plugin setting --> 3 <mybatis.generator.generatorConfig.xml>${basedir}/src/test/resources/generatorConfig.xml</mybatis.generator.generatorConfig.xml> 4 <mybatis.generator.generatorConfig.properties>file:///${basedir}/src/test/resources/generatorConfig.properties</mybatis.generator.generatorConfig.properties> 5 </properties>
2.在maven項目中的test模塊里進行配置:
在test/resources下添加generatorConfig.xml


1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 5 6 <!-- 配置Run As Maven build : Goals 參數 : mybatis-generator:generate -Dmybatis.generator.overwrite=true --> 7 <!-- 配置 tableName,使用 Run As Maven build 生成 dao model 層 --> 8 <generatorConfiguration> 9 <!-- 配置文件路徑 --> 10 <properties url="${mybatis.generator.generatorConfig.properties}"/> 11 12 <!--數據庫驅動包路徑 --> 13 <classPathEntry location="${drive.class.path}"/> 14 15 <context id="DB2Tables" targetRuntime="MyBatis3"> 16 <!--關閉注釋 --> 17 <commentGenerator> 18 <property name="suppressAllComments" value="true"/> 19 </commentGenerator> 20 21 <!--數據庫連接信息 --> 22 <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}" 23 password="${jdbc.password}"> 24 </jdbcConnection> 25 26 <!--生成的model 包路徑 --> 27 <javaModelGenerator targetPackage="${model.package}" targetProject="${target.project}"> 28 <property name="enableSubPackages" value="ture"/> 29 <property name="trimStrings" value="true"/> 30 </javaModelGenerator> 31 32 <!--生成xml mapper文件 路徑 --> 33 <sqlMapGenerator targetPackage="${xml.mapper.package}" targetProject="${target.project}"> 34 <property name="enableSubPackages" value="ture"/> 35 </sqlMapGenerator> 36 37 <!-- 生成的Dao接口 的包路徑 --> 38 <javaClientGenerator type="XMLMAPPER" targetPackage="${dao.package}" targetProject="${target.project}"> 39 <property name="enableSubPackages" value="ture"/> 40 </javaClientGenerator> 41 42 <!--對應數據庫表名 --> 43 <table tableName="user"> 44 45 </table> 46 </context> 47 </generatorConfiguration>
修改最后需要生成的表名,我將部分關鍵數據抽取出來放在generatorConfig.properties,這個文件放在同一目錄下。


1 # 數據庫驅動jar 路徑 2 drive.class.path=D:\\MyApp\\repository\\mysql\\mysql-connector-java\\5.1.29\\mysql-connector-java-5.1.29.jar 3 4 # 數據庫連接參數 5 jdbc.driver=com.mysql.jdbc.Driver 6 jdbc.url=jdbc:mysql://localhost:3306/數據庫名?useUnicode=true&characterEncoding=utf-8 7 jdbc.username=root 8 jdbc.password=密碼 9 10 # 包路徑配置 11 model.package=com.demo.modules.front.entity 12 dao.package=com.demo.modules.front.mapper 13 xml.mapper.package=com.demo.modules.front.mapper 14 15 target.project=src/main/java
3.生成
運行mybatis-generator:generate即可在需要的bao下生成對應的文件。
4.注意
在第二次或之后運行生成文件的時候,java類會被覆蓋,也就是說如果對實體對象進行了手動修改的話需要慎重;還有:
xml文件不會被覆蓋,只是追加,這樣會導致xml文件中重復模塊,因此需要刪除xml文件后生成。
由于idea默認只在resource下加載xml,如果默認配置mapper.java和xml同一個目錄,可能不會識別,所以需要將xml配置到resource下,或者在maven的pom中添加resource:


1 <!--配置Maven 對resource文件 過濾 --> 2 <resources> 3 <resource> 4 <directory>src/main/resources</directory> 5 <includes> 6 <include>**/*.properties</include> 7 <include>**/*.xml</include> 8 </includes> 9 <filtering>true</filtering> 10 </resource> 11 <resource> 12 <directory>src/main/java</directory> 13 <includes> 14 <include>**/*.properties</include> 15 <include>**/*.xml</include> 16 </includes> 17 <filtering>true</filtering> 18 </resource> 19 </resources>
?