导入坐标:
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-generatorartifactId>
<version>3.1.2version>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plusartifactId>
<version>3.1.2version>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.1.2version>
dependency>
<dependency>
<groupId>org.freemarkergroupId>
<artifactId>freemarkerartifactId>
<version>2.3.28version>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-extensionartifactId>
<version>3.1.2version>
dependency>
接下来使用代码构造器生成代码 并配置输出的包:
/**
* @author zhangfc
* @description 数据库对应表的生成器
* @data 2021-04-25 09:37:07
*/
public class MyGeneratorUtil {
/**
* @param tableName
* @description 创建代码生成器 生成代码指定路径
*/
public static void createDataBase(String[] tableName) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
//配置输出的位置的根路径
gc.setOutputDir("D:\\idea_project\\test1\\provider/src/main/java")
//配置生成代码的作者
.setAuthor("zhangfc")
.setOpen(false)
//是否生成swagge2注解 true 开启 false 关闭
.setSwagger2(true)
//生成类的名字 %s是表名
.setServiceName("%sService");
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
//设置数据库的ip和端口
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/leadnews_user?useSSL=false&&characterEncoding=UTF-8&characterEncoding=utf8&serverTimezone=UTC")
//设置数据库driver
.setDriverName("com.mysql.jdbc.Driver")
//设置数据库帐号
.setUsername("root")
//设置密码
.setPassword("root")
//自定义表字段类型转换
.setTypeConvert(new MySqlTypeConvert() {
@Override
public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
//数据库中的datetime 类型默认会转换为java中的LocalDateTime 这里自定转换为Data类型
if (fieldType.toLowerCase().contains("datetime")) {
return DbColumnType.DATE;
}
return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
}
});
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig().setParent("com.person").setModuleName("provider");
mpg.setPackageInfo(pc);
// 自定义配置 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
this.setMap(map);
}
};
// 模板是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return "D:\\idea_project\\test1\\provider/src/main/resources/mapper/"
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
//表名映射到实体的生成策略 大驼峰命名
strategy.setNaming(NamingStrategy.underline_to_camel)
//数据库表字段映射到实体 小驼峰 未设置的话按照Naming的策略
.setColumnNaming(NamingStrategy.underline_to_camel)
//生成的实体是否为lombok模型(默认是false)
.setEntityLombokModel(true)
//生成@Restcontroller控制器
.setRestControllerStyle(true)
//自定义继承的Controller类全称
// .setSuperControllerClass("com.baomidou.ant.common.BaseController")
//执行的表名
.setInclude(tableName)
//驼峰转连字符
.setControllerMappingHyphenStyle(true)
//表前缀
.setTablePrefix("m_");
mpg.setStrategy(strategy)
.setTemplateEngine(new FreemarkerTemplateEngine())
.execute();
}
}
接下来就可以使用这个工具 进行代码的自动生成了:
@SpringBootTest(classes = ProviderApp.class)
@RunWith(SpringRunner.class)
@Slf4j
public class MyTest {
@Test
public void createMysqlTable(){
MyGeneratorUtil.createDataBase(new String[]{
"ap_user","ap_user_realname"});
}
}
执行之后检查多出的文件:如图:
1.这是传统的swagger2界面:
2.这是优化过的swagger2界面:
由上面对比可看出传统的界面杂乱无章,而且调试很不方面,但优化过的界面则非常简洁,而且调试也特别方便下面就介绍怎么配置优化后的swagger2:
首先导入坐标:
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger2artifactId>
<version>2.9.2version>
dependency>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger-uiartifactId>
<version>2.9.2version>
dependency>
<dependency>
<groupId>com.github.xiaoymingroupId>
<artifactId>swagger-bootstrap-uiartifactId>
<version>1.9.6version>
dependency>
然后增加一个swagger2的配置类:
@Configuration//配置注解
@EnableSwagger2//开启传统swagger2界面
@EnableSwaggerBootstrapUI//优化swagger2界面
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.basePackage("com.person"))
.paths(PathSelectors.any())
.build()
.apiInfo(new ApiInfoBuilder()
.title("Swagger2接口文档")
.description("信息信息...")
.version("9.0")
.license("apache license")
.licenseUrl("http://www.baidu.com")
.build());
}
}
接着到controller层设置自己想要展示接口说明:
/**
*
* APP用户信息表 前端控制器
*
*
* @author zhangfc
* @since 2021-04-25
*/
@RestController
@RequestMapping("/provider/ap-user")
@Api(tags = "apuser表的操作")
public class ApUserController{
@Autowired
private ApUserMapper apUserMapper;
@GetMapping("/findAll")
@ApiOperation("查询全部数据")
public List<ApUser> selectAll(){
return apUserMapper.selectAll();
}
}
我该项目的端口号是8011,启动项目后打开浏览器输入http://localhost:8011/doc.html 回车:
然后就会显示与之对应的接口.