尋找寫程式碼感覺(五)之Mybatis官方程式碼生成器的使用

久曲健發表於2021-10-11

一、Mybatis Generator生成器

見名知意,官方給出的程式碼生成器。好處就是不用自己寫實體類、介面、xml檔案了,應對簡單增刪改查是可以的。複雜的還是需要自己手寫sql的。

二、Mybatis程式碼生成器的使用

下面將演示使用程式碼生成器,生成持久層程式碼。

1、新增POM依賴

<!-- mybatis generator 自動生成程式碼外掛 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <configurationFile>src/main/resources/generator/generator-config.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.22</version>
                    </dependency>
                </dependencies>
            </plugin>

2、新增對應配置檔案

src/main/resources/generator/下,建立generator-config.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>
    <context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">

        <!-- 自動檢查關鍵字,為關鍵字增加反引號 -->
        <property name="autoDelimitKeywords" value="true"/>
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <!--覆蓋生成XML檔案-->
        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
        <!-- 生成的實體類新增toString()方法 -->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>

        <!-- 不生成註釋 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/wiki?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;serverTimezone=UTC"
                        userId="wiki"
                        password="wiki">
        </jdbcConnection>

        <!-- domain類的位置 -->
        <javaModelGenerator targetProject="src\main\java"
                            targetPackage="com.rongrong.wiki.domain"/>

        <!-- mapper xml的位置 -->
        <sqlMapGenerator targetProject="src\main\resources"
                         targetPackage="mapper"/>

        <!-- mapper類的位置 -->
        <javaClientGenerator targetProject="src\main\java"
                             targetPackage="com.rongrong.wiki.mapper"
                             type="XMLMAPPER"/>

      <table tableName="demo" domainObjectName="Demo"/>

    </context>
</generatorConfiguration>

3、準備資料庫示例demo

執行如下SQL示例:

CREATE TABLE `demo` (
                        `id` bigint(20) NOT NULL AUTO_INCREMENT,
                        `name` varchar(50) DEFAULT NULL COMMENT '使用者名稱',
                        PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='測試';

INSERT INTO demo VALUES ('111', '這是程式碼生成器的測試資料')

4、配置啟動項

使用maven命令生成,如下圖:

5、點選執行

6、檢視控制檯效果

可以清楚的看到,生成的實體類及介面。

三、編寫Service及測試介面

1、編寫Service程式碼

示例程式碼如下:

package com.rongrong.wiki.service;

import com.rongrong.wiki.domain.Demo;
import com.rongrong.wiki.domain.Test;
import com.rongrong.wiki.mapper.DemoMapper;
import com.rongrong.wiki.mapper.TestMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author rongrong
 * @version 1.0
 * @description
 * @date 2021/10/10 23:09
 */
@Service
public class DemoService {

    @Resource
    private DemoMapper demoMapper;

    public List<Demo> list() {
        return demoMapper.selectByExample(null);
    }
}

2、編寫介面

示例程式碼如下:

package com.rongrong.wiki.controller;

import com.rongrong.wiki.domain.Demo;
import com.rongrong.wiki.domain.Test;
import com.rongrong.wiki.service.DemoService;
import com.rongrong.wiki.service.TestService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

/**
*
* @description
* @version 1.0
* @author longrong.lang
*
*/
@RestController
@RequestMapping("/demo")
public class DemoController {

    @Resource
    private DemoService demoService;

    @GetMapping("/list")
    public List<Demo> demolist() {
        return demoService.list();
    }
}

3、測試介面

結果如下:

四、寫在最後

到此,程式碼生成器的使用演示完畢,有興趣的同學,請自行嘗試。

相關文章