参考文档https://blog.csdn.net/qq_42682745/article/details/120626012需要注意的问题:
1.代码生成器中,需要的功能是手动输入表的名称的话,就将参考官方的代码,我这里是我自己修改的代码(需要提前配置好数据库,在springboot的yml文件里面配置):
package com.yao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* @Author:ZhZi
* @Date:2022/4/16 14:45
* @Version:IntelliJ IDEA
* @Description:代码生成器-mybatis-plus
*/
public class CodeGenerator {
/**
* 执行初始化数据库脚本
*/
// public static void before() throws SQLException {
// Connection conn = DATA_SOURCE_CONFIG.build().getConn();
// InputStream inputStream = H2CodeGeneratorTest.class.getResourceAsStream("/sql/init.sql");
// ScriptRunner scriptRunner = new ScriptRunner(conn);
// scriptRunner.setAutoCommit(true);
// scriptRunner.runScript(new InputStreamReader(inputStream));
// conn.close();
// }
/**
* 数据源配置
*/
private static final DataSourceConfig DATA_SOURCE_CONFIG = new DataSourceConfig
.Builder("jdbc:mysql://127.0.0.1:3306/vueadmin","root","root")
.dbQuery(new MySqlQuery())
.schema("mybatis-plus")
.typeConvert(new MySqlTypeConvert())
.keyWordsHandler(new MySqlKeyWordsHandler())
.build();
/**
* 执行 run
*/
public static void main(String[] args){
//before();
List<String> tables = new ArrayList<>();
tables.add("p_user");
tables.add("p_question");
tables.add("p_answer");
tables.add("p_correct");
//自动生成,连接数据库
FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/vueadmin","root","root")
// 全局配置
.globalConfig(builder -> {
builder.author("周大象")
.outputDir(System.getProperty("user.dir")+"\\src\\main\\java") //输出路径(写到java目录)
// .enableSwagger() //开启swagger
.commentDate("yyyy-MM-dd")//创建时间
.fileOverride(); //开启覆盖之前生成的文件;
})
// 包配置
.packageConfig( builder-> {
builder.parent("com.yao")//主文件夹名 com.yao
// .moduleName("practice")//模块名
.entity("entity")//实体类
.service("service")//业务层接口
.serviceImpl("service.impl")//业务层接口实现
.controller("controller")//表现层
.mapper("mapper")//dao层
.xml("mapper")//spring 的mapper配置文件
.pathInfo(Collections.singletonMap(OutputFile.xml,System.getProperty("user.dir")+"\\src\\main\\resources\\mapper"));
})
// 策略配置
.strategyConfig((scanner, builder) ->
builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
.addTablePrefix("sys_")//过滤表名前缀
//表现层
.controllerBuilder()//表现层controller
.formatFileName("%sController")
.enableRestStyle()//开启RestStyle编程风格
// .enableHyphenStyle()
//pojo
.entityBuilder()//实体javabean
.enableLombok()
.logicDeleteColumnName("deleted")//逻辑删除的字段
.enableTableFieldAnnotation()//属性加上说明注释
//业务层
.serviceBuilder().//业务层
formatServiceFileName("%sService")//业务层接口名
.formatServiceImplFileName("%sServiceImpl")//业务层实现类
//mapper层配置策略
.mapperBuilder()
.superClass(BaseMapper.class)//继承的父类
.formatMapperFileName("%sMapper")//@Mapper开启
.enableMapperAnnotation()
.formatXmlFileName("%sMapper")
)
/*
模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
.templateEngine(new BeetlTemplateEngine())
.templateEngine(new FreemarkerTemplateEngine())
*/
.templateConfig(builder -> {
// 实体类使用我们自定义模板
builder.entity("templates/myentity.java");
})// 使用Freemarker引擎模板,默认的是Velocity引擎模板
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
// 处理 all 情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
2.同时还要注意当前工作的目录,之前试过一次由于idea的工作目录是D:\JAVA\springboot,导致输出的文件路径错误,你可以试一下使用输出路径查看当前的工作路径:
/**
* @Author:ZhZi
* @Date:2022/4/17 17:15
* @Version:IntelliJ IDEA
* @Description:
*/
public class PrinS {
public static void main(String[] args) {
//工作路径
System.out.println(System.getProperty("user.dir"));
}
}
我用的修改idea默认的工作路径为模块的路径,修改方法: