mybatis plus自动生成业务代码(controller,service,entity,mapper)

本文介绍如何使用MyBatis Plus自动生成代码,包括Maven依赖配置、代码生成器的详细设置步骤,以及如何通过策略配置实现数据库表与实体类的映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意: 最终生成的文件在你运行测试类所在项目根目录下的src/main/java路径下

//构建一个maven项目,添加以下依赖即可
<!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <!-- velocity 模板引擎, Mybatis Plus 代码生成器需要,还有其他的模板引擎,具体参照官网,注意网络
        环境,如果maven下载jar包失败,会导致自动生成代码时报错,ClassNotFound -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <!--<version>5.1.47</version>-->
            <version>8.0.18</version>
        </dependency>
        <!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency> <!--lombok用来简化实体类:需要安装lombok插件-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

自动生成代码类

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.ArrayList;

public class TestGenerator {
 public static void main(String[] args) {
  // 模块名 product
  String moduleName = "product";

  // 1.创建代码生成器
  AutoGenerator mpg = new AutoGenerator();

  // 2. 全局配置
  GlobalConfig gc = new GlobalConfig();
  //获取项目目录
  String projectPath = System.getProperty("user.dir");
  gc.setOutputDir(projectPath + "/src/main/java");
  // 文档注释 作者名
  gc.setAuthor("Mr.ZhangSan");
  // 是否打开资源管理器
  gc.setOpen(false);

  // 重新生成文件的时候是否覆盖
  gc.setFileOverride(true);
  // 去掉接口的首字母I
  gc.setServiceImplName("%sService");
  // 主键策略
  gc.setIdType(IdType.AUTO);
  // 定义生成的实体类中的日期类型
  gc.setDateType(DateType.ONLY_DATE);
  // 实体属性 Swagger2 注解
  gc.setSwagger2(true);

  mpg.setGlobalConfig(gc);
  
  // 3、 数据源配置
  DataSourceConfig dsc = new DataSourceConfig();
  dsc.setUrl("jdbc:mysql://localhost:3366/yckj_db?autoReconnect=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true");
  // mysql 驱动为5.x时的driverName
  // dsc.setDriverName("com.mysql.jdbc.Driver");
  // mysql 驱动为8.x时的driverName
  dsc.setDriverName("com.mysql.cj.jdbc.Driver");
  dsc.setUsername("root");
  dsc.setPassword("123456");
  // 设置数据库类型(可选) 可以根据驱动自动推断
  dsc.setDbType(DbType.MYSQL);

  mpg.setDataSource(dsc);

  // 4、包配置
  PackageConfig pc = new PackageConfig();
  //模块名 :com.test.product
  pc.setModuleName(moduleName);
  pc.setParent("com.test");
  // 最终的包名称  com.test.product.controller,其他类似
  pc.setController("controller");
  pc.setMapper("mapper");
  pc.setService("service");
  pc.setEntity("entity");

  mpg.setPackageInfo(pc);

  //5、 策略配置
  StrategyConfig strategy = new StrategyConfig();
  //设置要映射的表名
  strategy.setInclude("t_yckj_\\w*");
  // 数据库表映射到实体类的命名策略
  strategy.setNaming(NamingStrategy.underline_to_camel);
  //代表前缀不生成
  strategy.setTablePrefix("t_yckj_");
  //链式编程
  strategy.setEntityLombokModel(true);
  // 数据库列映射到实体类的命名策略
  strategy.setColumnNaming(NamingStrategy.underline_to_camel);
  //逻辑删除字段
  strategy.setLogicDeleteFieldName("deleted");
  //去掉布尔值的 is_ 前缀
  strategy.setEntityBooleanColumnRemoveIsPrefix(true);

  // 自动填充,策略
  TableFill gmtCreate = new TableFill("create_time", FieldFill.INSERT);
  TableFill gmtModified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
  ArrayList<TableFill> tableFills = new ArrayList<>();
  tableFills.add(gmtCreate);
  tableFills.add(gmtModified);

  strategy.setTableFillList(tableFills);

  // 乐观锁
  strategy.setVersionFieldName("version");
  // restful api风格
  strategy.setRestControllerStyle(true);
  // URL中驼峰转连字符  addProduct add-product
  strategy.setControllerMappingHyphenStyle(true);

  mpg.setStrategy(strategy);

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

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值