功能全面的mybatis-plus代码生成器,适合拿来主义!速度手冲!!!

Posted 吃螃蟹的小孩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了功能全面的mybatis-plus代码生成器,适合拿来主义!速度手冲!!!相关的知识,希望对你有一定的参考价值。

功能全面的mybatis-plus代码生成器,适合拿来主义!

产生原因

由于个人开发异常懒惰,非常厌倦配置常规的包一点点将配置复制进去,所以加了点注释供大家"食用",体验拿来主义的快乐。

源码

话不多说,上源码,大家冲!!!注释全在里面了!!!

package com.cxy.zjbg;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

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

/**
 * @Author: xing-yu-chen
 * @Project: zj-bg
 * @Description: mybatis-plus 代码生成器
 * @Data:Created in 2021/7/12 9:26 下午
 */
public class CodeGenerator {
    public static void main(String[] args) {
        //创建generator对象
        // 代码生成器
        AutoGenerator autoGenerator = new AutoGenerator();

        //数据源
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.mysql);
        // 配置数据库 url 地址
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/zj_app?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
        // 配置数据库连接用户名
        dataSourceConfig.setUsername("root");
        // 配置数据库连接密码
        dataSourceConfig.setPassword("123456");
        // 配置数据库驱动
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        autoGenerator.setDataSource(dataSourceConfig);

        //全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        // 代码生成的目录
        globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
        // 配置是否打开目录,false 为不打开
        globalConfig.setOpen(false);
        //作者信息
        globalConfig.setAuthor("cxy");
        //实体属性 Swagger2 注解
        globalConfig.setSwagger2(true);
        // 默认生成的 service 会有 I 前缀
        globalConfig.setServiceName("%sService");
        //设置时间格式为常规Date
        globalConfig.setDateType(DateType.ONLY_DATE);
        autoGenerator.setGlobalConfig(globalConfig);

        //包信息
        PackageConfig packageConfig = new PackageConfig();
        // 配置父包名
        packageConfig.setParent("com.cxy");
        // 配置模块名
        packageConfig.setModuleName("zjbg");
        // 配置 controller 包名
        packageConfig.setController("controller");
        // 配置 service 包名
        packageConfig.setService("service");
        // 配置 service.impl 包名
        packageConfig.setServiceImpl("service.impl");
        // 配置 mapper 包名
        packageConfig.setMapper("mapper");
        // 配置 entity 包名
        packageConfig.setEntity("entity");
        //设置时间
        autoGenerator.setPackageInfo(packageConfig);

        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };

        // 如果模板引擎是 velocity
         String templatePath = "/templates/mapper.xml.vm";

        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义配置会被优先输出
        focList.add(new FileOutConfig(templatePath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return System.getProperty("user.dir") + "/src/main/resources/mappers/"
                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });

        cfg.setFileOutConfigList(focList);
        autoGenerator.setCfg(cfg);

        //配置策略(数据库表配置)
        StrategyConfig strategyConfig = new StrategyConfig();
        // 配置 lombok 模式
        strategyConfig.setEntityLombokModel(true);
        // 配置数据表与实体类名之间映射的策略
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        // 配置数据表的字段与实体类的属性名之间映射的策略
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        // 配置 rest 风格的控制器(@RestController)
        strategyConfig.setRestControllerStyle(true);
        // 配置驼峰转连字符
        strategyConfig.setControllerMappingHyphenStyle(true);
        // 此处的表名为 t_users,去除前缀后剩下为 users。
        strategyConfig.setTablePrefix("t_");
        autoGenerator.setStrategy(strategyConfig);

        autoGenerator.execute();
    }
}

项目效果

整体

先来看个整体效果吧,表有点多,标志性来一下吧

在这里插入图片描述
好嗨哦!感觉人生已经到达了高潮!

entity

随手给你个例子瞅瞅

在这里插入图片描述
有Lombok,有表名注解,有Swagger注解的它不香吗?

mapper

在这里插入图片描述

xml

此处在mapper包下有xml,resource下也有就看你properties或者yml里配哪个位置,删掉一个即可

在这里插入图片描述

service

在这里插入图片描述

impl

在这里插入图片描述

这不冲?

以上是关于功能全面的mybatis-plus代码生成器,适合拿来主义!速度手冲!!!的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis-Plus逆向生成代码

MyBatis-Plus逆向生成代码

MyBatis-Plus 可视化代码生成器来啦,让你的开发效率大大提速!!

Mybatis-plus 基础使用

详解:MyBatis-Plus 代码生成器的使用

详解:MyBatis-Plus 代码生成器的使用