今天來看看一個經常使用的小功能,就是mybatis的逆向工程。(數據庫是mysql)java
什麼是逆向工程呢?看名字就知道反方向的一個什麼工程!mysql
其實啊,若是是日常咱們本身學習實踐一些小項目的時候,應該是先瞎寫幾張數據庫表,而後再打開IDEA或者Eclipse去搭建環境,經過一些和數據庫交互的框架去和數據庫交互,就好比用mybatis,咱們就要寫一個mapper和不少的pojo,還有mybatis.xml配置文件,若是mapper中定義的方法比較多,那麼咱們光寫一個mybatis.xml就要花很長時間,更不要說要處理一些其餘可能因爲失誤產生的bug。sql
這個時候,就是mybatis逆向工程出馬的時候了,能夠根據你的數據庫表直接產生mapper,pojo,以及每個mapper對應的xml。數據庫
注意一點:逆向工程對於全部的mybatis來講代碼都是通用的。api
首先,就是新建一個最基本的java項目,而後複製兩個jar包;mybatis
一個配置文件generatorContext.xml,這裏主要配置了幾個東西:鏈接數據庫的基本信息,指定生成pojo的包名,指定生成mapper的包名,指定數據庫表的表名;因此咱們本身要根據本身的實際狀況就是根據前面所說的四個東西本身修改一下就ok了,其餘的不用動。oracle
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 <generatorConfiguration> 7 <context id="testTables" targetRuntime="MyBatis3"> 8 <commentGenerator> 9 <!-- 是否去除自動生成的註釋 true:是 : false:否 --> 10 <property name="suppressAllComments" value="true" /> 11 </commentGenerator> 12 <!--數據庫鏈接的信息:驅動類、鏈接地址、用戶名、密碼 --> 13 <jdbcConnection driverClass="com.mysql.jdbc.Driver" 14 connectionURL="jdbc:mysql://localhost:3306/myitem" userId="root" 15 password="123456"> 16 </jdbcConnection> 17 18 <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 19 userId="yycg" password="yycg"> </jdbcConnection> --> 20 21 <!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析爲 Integer,爲 true時把JDBC DECIMAL 22 和 NUMERIC 類型解析爲java.math.BigDecimal --> 23 <javaTypeResolver> 24 <property name="forceBigDecimals" value="false" /> 25 </javaTypeResolver> 26 27 <!-- targetProject:生成PO類的位置 --> 28 <javaModelGenerator targetPackage="com.wyq.generator.domain" 29 targetProject=".\src"> 30 <!-- enableSubPackages:是否讓schema做爲包的後綴 --> 31 <property name="enableSubPackages" value="false" /> 32 <!-- 從數據庫返回的值被清理先後的空格 --> 33 <property name="trimStrings" value="true" /> 34 </javaModelGenerator> 35 <!-- targetProject:mapper映射文件生成的位置 --> 36 <sqlMapGenerator targetPackage="com.wyq.generator.mapper" 37 targetProject=".\src"> 38 <!-- enableSubPackages:是否讓schema做爲包的後綴 --> 39 <property name="enableSubPackages" value="false" /> 40 </sqlMapGenerator> 41 <!-- targetPackage:mapper接口生成的位置 --> 42 <javaClientGenerator type="XMLMAPPER" 43 targetPackage="com.wyq.generator.mapper" targetProject=".\src"> 44 <!-- enableSubPackages:是否讓schema做爲包的後綴 --> 45 <property name="enableSubPackages" value="false" /> 46 </javaClientGenerator> 47 <!-- 指定數據庫表 --> 48 <table tableName="tb_content"></table> 49 <table tableName="tb_content_category"></table> 50 <table tableName="tb_item"></table> 51 <table tableName="tb_item_cat"></table> 52 <table tableName="tb_item_desc"></table> 53 <table tableName="tb_item_param"></table> 54 <table tableName="tb_item_param_item"></table> 55 <table tableName="tb_order"></table> 56 <table tableName="tb_order_item"></table> 57 <table tableName="tb_order_shipping"></table> 58 <table tableName="tb_user"></table> 59 </context> 60 </generatorConfiguration>
而後隨便寫一個類,類裏面只有一個main方法,加載這個generatorContext.xml就能夠了。app
1 package com.wyq.generator; 2 3 import java.io.File; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 import org.mybatis.generator.api.MyBatisGenerator; 8 import org.mybatis.generator.config.xml.ConfigurationParser; 9 import org.mybatis.generator.internal.DefaultShellCallback; 10 11 public class MyGenerator { 12 13 public static void main(String[] args) throws Exception { 14 List<String> warnings = new ArrayList<String>(); 15 boolean overwrite = true; 16 File configFile = new File("generatorConfig.xml"); 17 ConfigurationParser cp = new ConfigurationParser(warnings); 18 org.mybatis.generator.config.Configuration config = cp.parseConfiguration(configFile); 19 DefaultShellCallback callback = new DefaultShellCallback(overwrite); 20 MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); 21 myBatisGenerator.generate(null); 22 System.out.println("heheheheh"); 23 24 } 25 26 }
再運行就能夠了,可能控制檯啥也沒有,最好本身隨便添加打印語句能夠看到效果!框架
這裏注意幾點:dom
第一:逆向工程只能運行一次,運行第二次要報錯,若是要運行第二次,那麼就把剛剛生成的mapper和pojo所有刪除,再運行
第二:運行以後目錄那裏啥也沒有,須要你本身去刷新一下才能看到接口和pojo類(右鍵項目點擊ReFresh或者直接F5都行)。
第三:生成的mapper接口會報錯,其實這不是問題,緣由是缺乏mybatis的核心依賴jar包,對於咱們的目的沒有多大影響。