springboot+mybatis-plus代码自动生成

一、maven引入

        <!-- mysql数据库连接 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.27</version>
        </dependency>

        <!-- mybatis-spring-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>


        <!-- mybatis-plus代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!-- velocity模板引擎,用于mybatis-plus代码生成器 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>

二、低代码生成器

package com.example.demo.utils;

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.rules.NamingStrategy;

/**
 * 低代码生成器
 */
public class GenerateCode {

    /**
     * 生成代码的输出模块
     */
    private final static String MODULE = "generate";
    /**
     * 需要自动生成代码的表名,用【,】分隔
     */
    private final static String TABLE_NAME = "表1,表2";

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

        // 1、全局配置
        GlobalConfig gc = new GlobalConfig();
        // 项目根目录
        String projectPath = System.getProperty("user.dir");
        // 生成代码的输出目录:一般这个就是固定的,这里不用写到具体的哪个包,因为下面会单独配置包名
        gc.setOutputDir(projectPath + "/src/main/java");
        // 生成代码的author
        gc.setAuthor("test");
        // 生成代码后,是否自动打开生成的目录:这里我们不需要,因为就是生成到当前项目
        gc.setOpen(false);
        // 去掉Service的I前缀
        gc.setServiceName("%Service");
        // 设置全局配置
        ag.setGlobalConfig(gc);

        // 2、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://xxxx?characterEncoding=UTF-8&autoReconnect=true");
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("xxx");
        dsc.setPassword("xxx");
        ag.setDataSource(dsc);

        // 3、包的配置
        PackageConfig pc = new PackageConfig();
        // 设置包名:和上面的输出目录进行拼接(ourDir+parent)
        pc.setParent("com.example");
        // 检测命令行输入的模块名:和上面的包名进行拼接(outDir+parent+moduleName),生成代码都会放到这个模块下
        pc.setModuleName("demo");
        ag.setPackageInfo(pc);

        // 4、策略配置
        StrategyConfig sc = new StrategyConfig();
        // 自动生成的实体类的命名:数据库映射到实体类,下划线转驼峰
        sc.setNaming(NamingStrategy.underline_to_camel);
        // 这里如果不设置,会跟随上面实体类的命名设置
        sc.setColumnNaming(NamingStrategy.underline_to_camel);
        // 字段注解:这里我们把表字段的注解打开,比如@TableField("car_name")
        sc.setEntityTableFieldAnnotationEnable(true);
        // 实体类的父类:如果有就配置,记得加包名
        sc.setSuperEntityClass("com.example.demo.base.BaseEntity");
        // 映射类的父类:如果有就配置,记得加包名
        sc.setSuperMapperClass("com.baomidou.mybatisplus.core.mapper.BaseMapper");
        // 服务接口的父类:如果有就配置,记得加包名
        sc.setSuperServiceClass("com.example.demo.base.IService");
        // 服务实现类的父类:如果有就配置,记得加包名
        sc.setSuperServiceImplClass("com.example.demo.base.ServiceImpl");
        // 控制器类的父类:如果有就配置,记得加包名
        sc.setSuperControllerClass("com.example.demo.base.BaseController");
        // lombok:是否开启Lombok的注解,比如@Data,@EqualsAndHashCode(callSuper = true)
        sc.setEntityLombokModel(true);
        // 控制器的@RestController注解:是否开启,不开启则默认为@Controller
        sc.setRestControllerStyle(true);
        // 监测命令行的输入:表名
        sc.setInclude(TABLE_NAME.split(","));
        // 控制器的请求映射url风格:驼峰转连字符,比如"carList"-> "car-list"
        sc.setControllerMappingHyphenStyle(true);
        // 设置表的前缀:设置后,生成的类名和Controller的请求映射中就不会包含表前缀
        // 设置后为 @RequestMapping("/gps/car"),而不是@RequestMapping("/gps/gps-car")
        // 类名同理
        sc.setTablePrefix();
        ag.setStrategy(sc);

        ag.execute();
    }
}

三、可以自行定义base包,里面定义好controller、service需要继承的父接口

 四、运行 GenerateCode类的main方法会自行生成数据库中表对应的实体类、mapper、service和controller

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值