很多開發(fā)者在進(jìn)行Java Web開發(fā)的時候都會遇到這樣一種情況:需要使用MySQL數(shù)據(jù)庫并且需要在Java代碼中生成對應(yīng)的實體類,但是手動一個一個地寫實體類會非常費時間,這時候就需要使用MySQL逆向生成實體類的方法。
MySQL逆向生成實體類的方法主要分為以下兩步:
第一步,我們需要在MySQL中導(dǎo)出數(shù)據(jù)庫中的表結(jié)構(gòu)信息。在MySQL的命令行中輸入以下命令:
mysqldump -h 主機(jī)名 -u 用戶名 -p 數(shù)據(jù)庫名 >文件名.sql
其中,主機(jī)名是指要連接的MySQL數(shù)據(jù)庫所在的服務(wù)器的地址,用戶名是指連接MySQL數(shù)據(jù)庫所需要使用的用戶名,數(shù)據(jù)庫名是指要導(dǎo)出的MySQL數(shù)據(jù)庫的名稱,文件名.sql是指導(dǎo)出的表結(jié)構(gòu)信息保存的文件名。
第二步,我們需要使用MyBatis Generator工具根據(jù)導(dǎo)出的表結(jié)構(gòu)信息生成對應(yīng)的Java實體類。在MyBatis的官網(wǎng)中下載MyBatis Generator的最新版本并解壓,然后在解壓后的目錄下找到generatorConfig.xml文件并打開,修改其中的以下配置項:
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/數(shù)據(jù)庫名" userId="用戶名" password="密碼" /> <javaModelGenerator targetPackage="com.example.entity" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="com.example.dao" targetProject="src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <javaClientGenerator targetPackage="com.example.dao" targetProject="src/main/java" type="XMLMAPPER"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <table schema="" tableName="表名"> <generatedKey column="主鍵列名" sqlStatement="MySql" identity="true" /> </table>
其中,jdbcConnection配置項中的connectionURL需要修改為連接MySQL數(shù)據(jù)庫的URL,userId和password需要修改為連接MySQL數(shù)據(jù)庫所需要使用的用戶名和密碼;javaModelGenerator配置項中的targetPackage需要修改為要生成實體類的包名,targetProject需要修改為實體類保存的路徑;sqlMapGenerator配置項和javaClientGenerator配置項與javaModelGenerator配置項類似,但是targetPackage需要修改為對應(yīng)的Mapper類所在的包;table配置項中的tableName需要修改為要生成實體類的表名,generatedKey配置項中的column需要修改為對應(yīng)的主鍵列名。
修改完配置項后,我們需要在MyBatis Generator的目錄下打開命令行,輸入以下命令:
java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml -overwrite
其中,mybatis-generator-core-x.x.x.jar是指下載的MyBatis Generator的Jar包的名稱,generatorConfig.xml是指修改過的配置文件的名稱,-overwrite是指覆蓋已經(jīng)生成的實體類。
運行命令后,就會在targetPackage指定的包下生成對應(yīng)的Java實體類。