1. 程式人生 > >SpringBoot+mybatis逆向工程

SpringBoot+mybatis逆向工程

使用開發工具:idea

一、建立springBoot工程後,在pom.xml檔案中新增如下程式碼,以下程式碼是連線資料庫的一些jar包和生成的工具

<!--1.myBatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>
<!--2.連線資料庫 驅動-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.41</version>
</dependency>
<!--3.資料來源 連線池-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.0</version>
</dependency>

<!--mapper-->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>1.2.4</version>
</dependency>
<!--pagehelper分頁的-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.3</version>
</dependency>

<!--逆向工程所需要的-->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.2</version>
    <scope>compile</scope>
    <optional>true</optional>
</dependency>

二、建立GeneratorDisplay類

這個類執行後直接生成xxxxxmapper.xml

注意,這個類中需要修改 File configFile = new File("src/main/resources/config/generatorConfig.xml");中的這個xml所在的實際位置。

public class GeneratorDisplay {

    public void generator() throws Exception{

        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        //指定 逆向工程配置檔案
        File configFile = new File("src/main/resources/config/generatorConfig.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);

    }

    public static void main(String[] args) throws Exception {
        try {
            GeneratorDisplay generatorSqlmap = new GeneratorDisplay();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

三、建立MyMapper介面

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/**
 * 繼承自己的MyMapper
 *
 * @author liuzh
 * @since 2015-09-06 21:53
 */
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
    //TODO
    //FIXME 特別注意,該介面不能被掃描到,否則會出錯
}

四、建立第三點提到的generatorConfig.xml檔案

這個檔案一般放在resources/config下面

<?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="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <!--配置外掛位置 MyMapper-->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="com.hdlhd.mapputil.MyMapper"/> <!-- 這裡指向第三點建立的MyMapper -->
        </plugin>

        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://資料庫地址"
                        userId="資料庫名"
                        password="資料庫密碼">
        </jdbcConnection>

        <!-- 對於生成的pojo所在包 自己先建立-->
        <javaModelGenerator targetPackage="com.hdlhd.driver.pojo" targetProject="src/main/java"/>

        <!-- 對於生成的mapper所在目錄  自己先建立-->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>

        <!-- 配置mapper對應的java對映 自己先建立-->
        <javaClientGenerator targetPackage="com.hdlhd.driver.mapper" targetProject="src/main/java"
                             type="XMLMAPPER"/>


        <table tableName="%"></table>
        <!-- %號代表所有的表,可以根據實際需求改為自己要生成的表的名字 -->

    </context>
</generatorConfiguration>

五、此時,以上配置完成後,即可執行第二點中的GeneratorDisplay類中的main()即可生成相應的實體類