徐州建设工程招投标官方网站搜索引擎排名2020
今天看别人使用了一个更加智能的生成代码工具,可视化、可配置策略,非常方便,配置一次,在哪都可以使用,也不会跟项目藕合下面简单说一下使用方式。
1、介绍mybatis-plus-generator-ui
主要是封装了mybatis-plus-generator,而且有UI,全部界面化,很方便,也可以自定义模板等等。支持POSTGRE_SQL、ORACLE、DB2、MySQL、SQLSERVER等常见的关系型数据库。
2、使用方式
1、初始化
先自己新建一个maven项目
pom引入工具:
<dependencies><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.27</version></dependency><dependency><groupId>com.github.davidfantasy</groupId><artifactId>mybatis-plus-generator-ui</artifactId><version>1.4.5</version></dependency></dependencies>
新建启动类:它支持将GeberatorUIServer独立部署为一个单独的spring boot项目。
package com.springboot.test;import com.github.davidfantasy.mybatisplus.generatorui.GeneratorConfig;
import com.github.davidfantasy.mybatisplus.generatorui.MybatisPlusToolsApplication;
import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter;/*** @author fei.chen* @projectName mybatis-generator-ui* @date 2023/5/4下午 4:58*/
public class GeneratorMain {public static void main(String[] args) {GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:postgresql://111.111.111.111:15432/tables").userName("postgres").password("1111111").driverClassName("org.postgresql.Driver")// 数据库schema,POSTGRE_SQL,ORACLE,DB2类型的数据库需要指定.schemaName("public")// 如果需要修改各类生成文件的默认命名规则,可自定义一个NameConverter实例,覆盖相应的名称转换方法:.nameConverter(new NameConverter() {/*** 自定义Service类文件的名称规则*/public String serviceNameConvert(String tableName) {return this.entityNameConvert(tableName) + "Service";}/*** 自定义Controller类文件的名称规则*/public String controllerNameConvert(String tableName) {return this.entityNameConvert(tableName) + "Controller";}}).basePackage("com.springboot.test").port(8068).build();MybatisPlusToolsApplication.run(config);}
}
2、启动
直接执行main方法即可,在main中指定了程序的运行端口为8086,这种运行方式跟SpringBoot非常相似。
请求url: http://localhost:8068/
数据表都展示出来了。
3、生成所需代码
ok查看项目刷新一下,全部生成:
4、xml 可以自己配置
比如我想在xml增加一个自己的查询语句,直接生成出来
需要的都生成出来了,也是很方便的
3、可配置
1、代码配置
在启动类上可以配置后缀
Service、Controller、Entity、FieldName都可以实现自定义的扩展,自己可以实现。
可查看NameConverter类:
package com.github.davidfantasy.mybatisplus.generatorui.mbp;import cn.hutool.core.util.StrUtil;
import com.github.davidfantasy.mybatisplus.generatorui.dto.Constant;
import com.google.common.base.Strings;import static com.github.davidfantasy.mybatisplus.generatorui.dto.Constant.DOT_JAVA;
import static com.github.davidfantasy.mybatisplus.generatorui.dto.Constant.DOT_XML;/*** 自定义各类名称转换的规则*/
public interface NameConverter {/*** 自定义Entity.java的类名称** @param tableName 表名称* @return*/default String entityNameConvert(String tableName) {if (Strings.isNullOrEmpty(tableName)) {return "";}tableName = tableName.substring(tableName.indexOf(StrUtil.UNDERLINE) + 1, tableName.length());return StrUtil.upperFirst(StrUtil.toCamelCase(tableName.toLowerCase()));}/*** 自定义表字段名到实体类属性名的转换规则** @param fieldName 表字段名称* @return*/default String propertyNameConvert(String fieldName) {if (Strings.isNullOrEmpty(fieldName)) {return "";}if (fieldName.contains("_")) {return StrUtil.toCamelCase(fieldName.toLowerCase());}return fieldName;}/*** 自定义Mapper.java的类名称*/default String mapperNameConvert(String tableName) {return entityNameConvert(tableName) + "Mapper";}/*** 自定义Mapper.xml的文件名称*/default String mapperXmlNameConvert(String tableName) {return entityNameConvert(tableName) + "Mapper";}/*** 自定义Service.java的类名称*/default String serviceNameConvert(String tableName) {return "I" + entityNameConvert(tableName) + "Service";}/*** 自定义ServiceImpl.java的类名称*/default String serviceImplNameConvert(String tableName) {return entityNameConvert(tableName) + "ServiceImpl";}/*** 自定义Controller.java的类名称*/default String controllerNameConvert(String tableName) {return entityNameConvert(tableName) + "Controller";}/*** 自定义其它生成文件的文件名(不包括entity,mapper.java,mapper.xml,service,serviceImpl,controller这6种)** @param fileType 在页面上输入的输出文件标识* @param tableName 关联的数据表名称名称* @return 生成文件的名称,带后缀*/default String outputFileNameConvert(String fileType, String tableName) {if (fileType.equals(Constant.FILE_TYPE_ENTITY)) {return this.entityNameConvert(tableName) + DOT_JAVA;} else if (fileType.equals(Constant.FILE_TYPE_MAPPER)) {return this.mapperNameConvert(tableName) + DOT_JAVA;} else if (fileType.equals(Constant.FILE_TYPE_MAPPER_XML)) {return this.mapperXmlNameConvert(tableName) + DOT_XML;} else if (fileType.equals(Constant.FILE_TYPE_SERVICE)) {return this.serviceNameConvert(tableName) + DOT_JAVA;} else if (fileType.equals(Constant.FILE_TYPE_SERVICEIMPL)) {return this.serviceImplNameConvert(tableName) + DOT_JAVA;} else if (fileType.equals(Constant.FILE_TYPE_CONTROLLER)) {return this.controllerNameConvert(tableName) + DOT_JAVA;}return this.entityNameConvert(tableName) + fileType;}}
2、针对源代码更改模板
需要定制UI的话,将代码clone下来后,进入到frontend目录下,进行相应的扩展开发。
修改完成后,需要另行编译src\frontend中的静态资源(源码中不包含已编译的页面),在src\frontend文件夹中执行:
yarn install
yarn run build
4、源码地址
剩下的自己研究吧~
- https://github.com/davidfantasy/mybatis-plus-generator-ui