Utiliser l'ingénierie inverse MyBatis dans le projet Spring Boot pour améliorer l'efficacité du développement

avant-propos

Dans le développement d'applications modernes au niveau de l'entreprise, il est souvent nécessaire de créer des classes d'entités correspondantes, des interfaces Mapper et des fichiers de mappage Mapper en fonction de la structure de table de la base de données. Si tous sont créés manuellement, cela prend du temps et est sujet aux erreurs. MyBatis Generator (MBG) est un outil qui peut nous aider à générer rapidement le code correspondant selon la structure de la table de la base de données, ce que nous appelons habituellement la rétro-ingénierie.

1. Ajouter des dépendances associées

Pour utiliser la rétro-ingénierie MyBatis, nous devons d'abord ajouter les dépendances nécessaires au projet Spring Boot. Voici la configuration pom.xml pour ajouter les dépendances MyBatis et MyBatis Generator dans le projet Spring Boot à l'aide de la base de données MySQL :

<dependencies>
    <!-- Spring Boot Starters -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <!-- MyBatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>

    <!-- MyBatis Generator -->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.4.0</version>
    </dependency>
</dependencies>

2. Écrivez le fichier de configuration du générateur

La base du travail de MBG est le fichier de configuration, qui indique à MBG comment se connecter à la base de données et comment générer du code pour quelles tables. src/main/resourcesCréez un fichier nommé dans le répertoire du projet Spring Boot generatorConfig.xmlet remplissez-le selon le modèle suivant :

<?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">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/test"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <javaModelGenerator targetPackage="com.example.demo.entity" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <javaClientGenerator targetPackage="com.example.demo.mapper" targetProject="src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <table schema="test

" tableName="user" domainObjectName="User">
        </table>
    </context>
</generatorConfiguration>

3. Ecrire un générateur de code

Ensuite, nous créons une classe dans notre projet pour effectuer la génération de code. La fonction de cette classe est de lire generatorConfig.xmlle fichier et d'appeler MyBatis Generator pour générer du code.

Voici un exemple de classe de générateur simple :

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.util.ArrayList;
import java.util.List;

public class CodeGenerator {
    
    
    public static void main(String[] args) throws Exception {
    
    
        List<String> warnings = new ArrayList<>();
        boolean overwrite = true;
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(CodeGenerator.class.getResourceAsStream("/generatorConfig.xml"));
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }
}

Quatrièmement, exécutez la génération de code

CodeGeneratorEnfin, il vous suffit d'exécuter la méthode de la classe créée ci-dessus mainpour generatorConfig.xmlgénérer le code correspondant en fonction du fichier de configuration. Démarrez le projet et exécutez la fonction principale CodeGenerator, le code générera automatiquement le chemin cible que vous avez défini dans le fichier de configuration en fonction de la structure de la table de la base de données.

public class CodeGenerator {
    
    
    public static void main(String[] args) throws Exception {
    
    
        // warnings用于存放代码生成过程中的警告信息
        List<String> warnings = new ArrayList<>();

        // 指定是否覆盖原有文件,如果为true则会覆盖原有文件
        boolean overwrite = true;

        // 解析MBG配置文件
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(CodeGenerator.class.getResourceAsStream("/generatorConfig.xml"));

        // 创建MBG
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);

        // 执行代码生成
        myBatisGenerator.generate(null);

        // 打印警告信息
        for (String warning : warnings) {
    
    
            System.out.println(warning);
        }
    }
}

5. Vérifiez le code généré

Une fois la génération de code terminée, nous pouvons voir la classe d'entité nouvellement générée, l'interface Mapper et le fichier de mappage XML Mapper dans le projet. Ensuite, vous pouvez utiliser ces codes pour les opérations de base de données.

Par exemple, pour la table "user" que nous avons définie dans le fichier de configuration de MBG, MBG a généré les fichiers suivants :

  1. User.java: Il s'agit de la classe d'entité correspondant à la table "user", qui contient tous les champs de la table et leurs méthodes getter et setter.

  2. UserMapper.java: Il s'agit de l'interface Mapper de la table "user", qui comprend les méthodes de base pour faire fonctionner la table "user", telles que sélectionner, insérer, mettre à jour, supprimer, etc.

  3. UserMapper.xml: Il s'agit du fichier de mapping XML Mapper de la table "user", qui contient les instructions SQL à opérer sur la table "user".

Vous pouvez injecter UserMapper dans le service Spring Boot, voici un exemple simple :

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;

@RestController
public class UserController {
    
    

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/users")
    public List<User> getAllUsers() {
    
    
        return userMapper.selectAll();
    }
}

Avec le code ci-dessus, vous pouvez démarrer l'application Spring Boot et accéder au chemin "/users" pour obtenir tous les utilisateurs de la base de données.

En utilisant MyBatis Generator, nous pouvons rapidement générer des codes correspondants basés sur des tables de base de données, ce qui améliore grandement notre efficacité de développement et réduit le travail répétitif. MyBatis Generator est un outil très pratique pour le prototypage rapide ou le traitement d'un grand nombre de tables de bases de données.

おすすめ

転載: blog.csdn.net/weixin_46703995/article/details/130857302