您的位置:首页 > 编程语言

Mybatis Plus 3.x 自动生成代码

2019-01-02 14:52 399 查看

自动生成代码

把心思放在写业务逻辑上,杜绝不必要的重复动作
第一步 导入Mybatis_plus对应的jar包

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.7</version>
</dependency>

第二步
填写对应配置

  • 全局配置
    配置自定义生成的Order,Controller,Service,ServiceImpl,Mapper,XML的名字以及配置是否开启Swagger2的支持等等
  • 数据源配置
  • 包配置
    配置对应的模块名以及要生成的代码所在的包名
  • 策略配置
    配置要生成的代码的一些策略,比如表明是否要驼峰命名,是否启用Lombok和REST风格以及各个类对应的父类及父接口等(此功能挺其强大,配置较多,推荐去看源码)
package pro.nbbt.admin.codeGenerator;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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;

import java.util.Scanner;

/**
* @author luohuiqi
* 2019年1月2日
* 控制台输入相应模块以及实体,Controller,service等名称,自动生成代码
*/
public class CodeGenerator {

/**
* <p>
* 读取控制台内容
* </p>
*/
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("帅哥,请输入一下你的" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}

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

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

gc.setEntityName(scanner("实体类名"));
gc.setControllerName(scanner("Controlller名"));
gc.setServiceName(scanner("Service名"));
gc.setServiceImplName(scanner("ServiceImpl名"));
gc.setMapperName(scanner("Mapper名"));
gc.setXmlName(scanner("XML名"));
mpg.setGlobalConfig(gc);

// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://47.101.57.159:3306/xulian-data?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("xulian705mysql");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName(scanner("模块名"));
pc.setParent("pro.nbbt.admin")
.setMapper("dao")
.setService("service")
.setController("controller")
.setEntity("model")
.setXml("dao.mapping");
mpg.setPackageInfo(pc);

// 策略配置
StrategyConfig strategy = new StrategyConfig();
// 表名生成策略(下划线转驼峰命名)
strategy.setNaming(NamingStrategy.underline_to_camel);
// 列名生成策略(下划线转驼峰命名)
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 是否启动Lombok配置
strategy.setEntityLombokModel(true);
// 是否启动REST风格配置
strategy.setRestControllerStyle(true);
// 自定义实体父类
strategy.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
// 自定义controller父类
strategy.setSuperControllerClass("pro.nbbt.base.controller.BaseController");
// 自定义service父接口
strategy.setSuperServiceClass("com.baomidou.mybatisplus.extension.service.IService");
// 自定义service实现类
strategy.setSuperServiceImplClass("com.baomidou.mybatisplus.extension.service.impl.ServiceImpl");
// 自定义mapper接口
strategy.setSuperMapperClass("com.baomidou.mybatisplus.core.mapper.BaseMapper");
strategy.setInclude(scanner("表名"));
strategy.setSuperEntityColumns("id");
mpg.setStrategy(strategy);

// 执行
mpg.execute();
}

}

代码执行后

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: