mybatis逆向工程,即利用現有的數據表結構,生成對應的model實體類、dao層介面,以及對應的mapper.xml映射文件。藉助mybatis逆向工程,我們無需手動去創建這些文件。 下麵是使用Java代碼的方式來實現逆向工程,生成文件(也可以使用插件來生成): 首先,導入需要的依賴包:myba ...
mybatis逆向工程,即利用現有的數據表結構,生成對應的model實體類、dao層介面,以及對應的mapper.xml映射文件。藉助mybatis逆向工程,我們無需手動去創建這些文件。
下麵是使用Java代碼的方式來實現逆向工程,生成文件(也可以使用插件來生成):
首先,導入需要的依賴包:mybatis逆向工程的依賴和資料庫的依賴
<!-- mybatis逆向工程--> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.24</version> </dependency>
關鍵在於這三個文件,mybatis-generatorConfig.xml是逆向工程的配置文件。generator.properties裡面是資料庫信息,提供給mybatis-generatorConfig.xml進行使用。GeneratorUtil.java是用來生成文件的Java代碼,運行其中的main方法即可實現逆向工程文件生成。
以下分別是這三個文件中的內容(根據自己的需求和資料庫信息進行修改)
generator.properties:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/pet
jdbc.userId=root
jdbc.pwd=123456
mybatis-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> <!--載入資源文件--> <properties resource="generator.properties"></properties> <context id="testTables" targetRuntime="MyBatis3"> <commentGenerator> <!--是否去除自動生成的註釋 true是:false 否--> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--資料庫連接--> <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.userId}" password="${jdbc.pwd}"></jdbcConnection> <!-- 預設false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true時把JDBC DECIMAL和NUMERIC類型解析為java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!--targetPackage目標包,生成實體類的位置--> <javaModelGenerator targetPackage="com.zyk.model" targetProject="src/main/java"> <!--enableSubPackages,是否讓schema作為包的尾碼--> <property name="enableSubPackages" value="false"/> <!--從資料庫返回的值被清除前後空格--> <property name="trimStrings" value="true"/> </javaModelGenerator> <!--targetProject:mapper映射文件生成的位置--> <sqlMapGenerator targetPackage="mapper" targetProject="./src/main/resources"> <property name="enableSubPackages" value="false"></property> </sqlMapGenerator> <!--targetPackage:mapper介面生成的位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.zyk.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="false"/> </javaClientGenerator> <!--指定資料庫表,要和資料庫中進行對應,否則將會出錯 ,如果想生成全部表,tableName設為% --> <table tableName="comments" domainObjectName="Comment" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="follows" domainObjectName="Follow" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="pets" domainObjectName="Pet" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="pictures" domainObjectName="Picture" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="posts" domainObjectName="Post" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="reports" domainObjectName="Report" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="requests" domainObjectName="Request" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> </context> </generatorConfiguration>
GeneratorUtil.java :
package com.zyk.util; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.exception.InvalidConfigurationException; import org.mybatis.generator.exception.XMLParserException; import org.mybatis.generator.internal.DefaultShellCallback; import java.io.File; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class GeneratorUtil { public void testGenerator() throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException { List<String> warnings=new ArrayList<String>(); boolean overWriter=true; //指向配置文件 File configFile=new File(GeneratorUtil.class.getResource("/mybatis-generatorConfig.xml").getFile()); ConfigurationParser cp=new ConfigurationParser(warnings); Configuration config=cp.parseConfiguration(configFile); DefaultShellCallback callback=new DefaultShellCallback(overWriter); MyBatisGenerator myBatisGenerator=new MyBatisGenerator(config,callback,warnings); myBatisGenerator.generate(null); } public static void main(String[] args)throws Exception { GeneratorUtil generatorTest=new GeneratorUtil(); generatorTest.testGenerator(); } }
執行GeneratorUtil.java中的main方法即可使用mybatis逆向工程生成文件。