Java MybatisPlus 代码生成器

简介

MybatisPlus 是 Mybatis 的增强工具,它能够简化开发者对于数据库操作的代码编写。而 MybatisPlus 的代码生成器是其中的一个重要功能,它能够根据数据库表结构自动生成实体类、Mapper 接口、Service 类等代码,大大提高了开发效率。

本文将详细介绍如何使用 MybatisPlus 代码生成器,并给出相应的代码示例。

前提条件

在开始之前,我们需要满足以下前提条件:

  1. 已安装 JDK,并正确配置 Java 环境变量。
  2. 已安装 Maven,并正确配置 Maven 环境变量。
  3. 已创建一个数据库,并在其中创建了需要生成代码的表。

步骤一:添加依赖

首先,我们需要在 Maven 项目的 pom.xml 文件中添加 MybatisPlus 与数据库驱动的依赖项。假设我们使用的数据库是 MySQL,依赖项如下:

<dependencies>
    <!-- MybatisPlus -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.0</version>
    </dependency>
    <!-- 数据库驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>
</dependencies>

请注意,上述版本号仅作为示例,请根据实际需要选择最新版本。

步骤二:配置数据源

application.propertiesapplication.yml 文件中配置数据库连接信息。例如,如果我们使用的是 MySQL 数据库,配置如下:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

请根据实际情况修改上述配置。

步骤三:配置代码生成器

在项目的 src/main/java 目录下创建一个名为 generator 的包,并在该包下创建一个名为 CodeGenerator.java 的类。这个类将用于配置代码生成器。

package com.example.generator;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * MybatisPlus 代码生成器配置类
 */
public class CodeGenerator {

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator generator = new AutoGenerator();

        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        globalConfig.setOutputDir(projectPath + "/src/main/java");
        globalConfig.setAuthor("Your Name");
        globalConfig.setOpen(false);
        globalConfig.setSwagger2(true);
        globalConfig.setBaseResultMap(true);
        globalConfig.setBaseColumnList(true);
        globalConfig.setIdType(IdType.AUTO);
        generator.setGlobalConfig(globalConfig);

        // 数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai");
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("123456");
        generator.setDataSource(dataSourceConfig);

        // 包配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.example");
        packageConfig.setModuleName("demo");
        generator.setPackageInfo(packageConfig);

        // 策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setEntityLombokModel(true);
        strategyConfig.setRestControllerStyle(true);
        strategyConfig.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
        strategyConfig.setSuperEntityColumns("id");
        strategyConfig.setInclude("user");  // 要生成代码的表名
        strategyConfig.setControllerMappingHyphenStyle(true);
        strategyConfig.setTablePrefix(packageConfig.getModuleName() + "_");
        generator.setStrategy(strategyConfig);

        // 执行代码生成器
        generator.execute();
    }