mybatis反向工程

mybatis反向工程

  1. 引言
    之前寫項目一直使用的是Hibernate。所以sql語句、實體類、dao這方面的代碼基本上都沒怎麼管過。但是這次項目我們使用的是SpringBoot+mybatis。好藍瘦啊,mybatis中的sql需要自己編寫就已經夠痛苦的了。難道實體類、dao、也需要自己一個個的手動編寫嗎?於是在度娘上了解了一下mybatis的反向工程。並且在這裏記錄一下自己的學習過程,方便以後的學習

  2. 環境及準備
    開發工具:MyEclipse2017
    項目搭建這裏就不做贅述了,下面是項目結構圖
    xXzM5OTE0NTgx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    核心:
    ①兩個jar包——mybatis-generator-core-1.3.2.jar和數據庫jar包:
    ②一個配置文件generator.xml
    ③執行語句

  3. 使用過程
    1.引入jar包(引入相關依賴)
    由於這裏我使用的是maven項目,所以只需要在pom.xml中加入如下依賴即可;

    <!-- mybatis依賴 -->
          <dependency>
    		<groupId>org.mybatis</groupId>
    		<artifactId>mybatis</artifactId>
    		<version>3.2.5</version>
    	</dependency>
    	<!--mysql依賴-->
          <dependency>
    		<groupId>mysql</groupId>
    		<artifactId>mysql-connector-java</artifactId>
    	</dependency>
        <!-- mybatis反向工程依賴 -->
    	<dependency>  
    	    <groupId>org.mybatis.generator</groupId>  
    	    <artifactId>mybatis-generator-core</artifactId>  
    	    <version>1.3.2</version>  
    	</dependency>

    2.jdbc.properties:配置數據源

    jdbc.driver=com.mysql.jdbc.Driver
    	jdbc.url=jdbc:mysql://localhost:3306/first
    	jdbc.username=root
    	jdbc.password=root

    3.log4j.properties:配置日誌

    log4j.rootLogger=debug,stdout  
    	log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
    	log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
    	log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    4.mbgConfiguration.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="jdbc.properties" />      
        <context id="sqlserverTables" targetRuntime="MyBatis3">    
            <!-- 生成的pojo,將implements Serializable-->    
            <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>    
            <commentGenerator>    
                <!-- 是否去除自動生成的註釋 true:是 : false:否 -->    
                <property name="suppressAllComments" value="true" />    
            </commentGenerator>    
        
            <!-- 數據庫鏈接URL、用戶名、密碼 -->    
            <jdbcConnection driverClass="${jdbc.driver}"    
                            connectionURL="${jdbc.url}"    
                            userId="${jdbc.username}"    
                            password="${jdbc.password}">    
            </jdbcConnection>    
        
            <!--      
            默認false,把JDBC DECIMAL 和 NUMERIC 類型解析爲 Integer    
                true,把JDBC DECIMAL 和 NUMERIC 類型解析爲java.math.BigDecimal      
            -->    
            <javaTypeResolver>    
                <property name="forceBigDecimals" value="false" />    
            </javaTypeResolver>    
        
            <!--     
            生成model模型,對應的包路徑,以及文件存放路徑(targetProject),targetProject可以指定具體的路徑,如./src/main/java,    
            也可以使用「MAVEN」來自動生成,這樣生成的代碼會在target/generatord-source目錄下    
            -->    
            <!--<javaModelGenerator targetPackage="com.joey.mybaties.test.pojo" targetProject="MAVEN">-->    
            <javaModelGenerator targetPackage="com.aaa.entity" targetProject="./src/main/java">    
                <property name="enableSubPackages" value="true"/>    
                <!-- 從數據庫返回的值被清理前後的空格  -->    
                <property name="trimStrings" value="true" />    
            </javaModelGenerator>    
        
            <!--對應的mapper.xml文件  -->    
            <sqlMapGenerator targetPackage="com.aaa.dao" targetProject="./src/main/java">    
                <property name="enableSubPackages" value="true"/>    
            </sqlMapGenerator>    
        
            <!-- 對應的Mapper接口類文件 -->    
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.aaa.dao" targetProject="./src/main/java">    
                <property name="enableSubPackages" value="true"/>    
            </javaClientGenerator>    
        
        
            <!-- 列出要生成代碼的所有表,這裏配置的是不生成Example文件 -->    
            <table schema="first" tableName="entry" domainObjectName="Entry"    
                   enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"    
                   enableSelectByExample="false" selectByExampleQueryId="false" >    
                <property name="useActualColumnNames" value="false"/>    
            </table>    
        </context>    
    </generatorConfiguration>

    5.編寫執行類:執行反向工程

    public class GenMain {
    	 public static void main(String[] args) throws IOException {  
    	        List<String> warnings = new ArrayList<String>();  
    	        boolean overwrite = true;  
    	        String genCfg ="./mbgConfiguration.xml";  
    	        File configFile = org.apache.ibatis.io.Resources.getResourceAsFile("mbgConfiguration.xml");
    	        ConfigurationParser cp = new ConfigurationParser(warnings);  
    	        Configuration config = null;  
    	        try {  
    	            config = cp.parseConfiguration(configFile);  
    	        } catch (IOException e) {  
    	            e.printStackTrace();  
    	        } catch (XMLParserException e) {  
    	            e.printStackTrace();  
    	        }  
    	        DefaultShellCallback callback = new DefaultShellCallback(overwrite);  
    	        MyBatisGenerator myBatisGenerator = null;  
    	        try {  
    	            myBatisGenerator = new MyBatisGenerator(config, callback, warnings);  
    	        } catch (InvalidConfigurationException e) {  
    	            e.printStackTrace();  
    	        }  
    	        try {  
    	            myBatisGenerator.generate(null);  
    	        } catch (SQLException e) {  
    	            e.printStackTrace();  
    	        } catch (IOException e) {  
    	            e.printStackTrace();  
    	        } catch (InterruptedException e) {  
    	            e.printStackTrace();  
    	        }  
    	    }  
    }
  4. 執行結果
    在這裏插入圖片描述
    刷新項目後項目結構
    在這裏插入圖片描述