MyBatis Generator (MBG)是一個mabatis的代碼生成器,能夠根據表自動生成mapper接口,mapper.xml文件,javaBean文件。
1、MBG的下載
打開https://github.com/mybatis/,可以看到有多個項目,找到generator項目,並下載下來。
解壓之后lib目錄下就有所需要的jar包
將第一個jar包導入項目中即可
2、MBG文檔
http://www.mybatis.org/generator/
打開之后選擇快速指導,進入xml配置
3、mbg.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="DB2Tables" targetRuntime="MyBatis3Simple"> <!-- jdbc配置 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/spring_mybatis?useUnicode=true&characterEncoding=UTF-8" userId="root" password="tuniu520"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- javaBean的生成 --> <javaModelGenerator targetPackage="com.pjf.mybatis.po" targetProject=".\src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- xml映射文件的生成 --> <sqlMapGenerator targetPackage="com.pjf.mybatis.dao" targetProject=".\src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- mapper接口的生成 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.pjf.mybatis.dao" targetProject=".\src/main/java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 指定逆向分析哪些表,根據表創建JavaBean --> <table tableName="hotel" domainObjectName="Hotel"></table> <table tableName="city" domainObjectName="City"></table> </context> </generatorConfiguration>
targetPackage表示將生成的文件放在哪個包下面
targetProject表示生成的文件放在哪個目錄下
domainObjectName表示對應的JavaBean名
具體的一些屬性的意思可以查詢文檔
可以看到上面的xml分別配置了JavaBean、mapper接口、mapper.xml文件、還有表名和對應的JavaBean名。
4、逆向工程生成
打開剛剛文檔,選擇Running MyBatis Generator
點擊進入
復制下代碼,
編寫逆向工程類類
package com.pjf.mybatis; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.internal.DefaultShellCallback; public class Test { @Test public void testMbg() throws Exception { // 將剛復制的代碼放在這, // 根據提示將導入的文件導入,異常拋出 List<String> warnings = new ArrayList<String>(); boolean overwrite = true; File configFile = new File("mbg.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } }
這時候刷新下就可以看到自動生成的代碼
這時候生成的是比較簡單的增刪改查語句,需要復雜的可以將mbg.xml文件中targetRuntime屬性的值改為MyBatis3。
修改之后可以看到生成了比較復雜的增刪改查