parent
aa13480348
commit
537759af7e
@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>org.yangliu</groupId>
|
||||||
|
<artifactId>code-generate</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>8</maven.compiler.source>
|
||||||
|
<maven.compiler.target>8</maven.compiler.target>
|
||||||
|
|
||||||
|
<codegenerate.version>1.4.3</codegenerate.version>
|
||||||
|
<mysql-connector-java.version>8.0.27</mysql-connector-java.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!--日志-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-log4j12</artifactId>
|
||||||
|
<version>1.7.36</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!--mysql-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>mysql</groupId>
|
||||||
|
<artifactId>mysql-connector-java</artifactId>
|
||||||
|
<version>${mysql-connector-java.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- postgresql -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.postgresql</groupId>
|
||||||
|
<artifactId>postgresql</artifactId>
|
||||||
|
<version>42.2.16</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!--模板引擎-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.freemarker</groupId>
|
||||||
|
<artifactId>freemarker</artifactId>
|
||||||
|
<version>2.3.32</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!--工具包-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.guava</groupId>
|
||||||
|
<artifactId>guava</artifactId>
|
||||||
|
<version>23.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.hutool</groupId>
|
||||||
|
<artifactId>hutool-all</artifactId>
|
||||||
|
<version>5.8.16</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-lang</groupId>
|
||||||
|
<artifactId>commons-lang</artifactId>
|
||||||
|
<version>2.6</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>3.12.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
@ -0,0 +1,175 @@
|
|||||||
|
package org.yangliu.codegenerate;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.google.common.base.CaseFormat;
|
||||||
|
import freemarker.cache.ClassTemplateLoader;
|
||||||
|
import freemarker.core.XMLOutputFormat;
|
||||||
|
import freemarker.template.Configuration;
|
||||||
|
import freemarker.template.Template;
|
||||||
|
import freemarker.template.TemplateException;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.yangliu.codegenerate.entity.TableEntityVo;
|
||||||
|
import org.yangliu.codegenerate.entity.TableVo;
|
||||||
|
import org.yangliu.codegenerate.util.MarkerGenerate;
|
||||||
|
import org.yangliu.codegenerate.util.TableFieldUtil;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DatabaseMetaData;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description
|
||||||
|
* @Author ZhouWenTao
|
||||||
|
* @Date 2023/8/13 19:16
|
||||||
|
*/
|
||||||
|
public class Main {
|
||||||
|
//包名
|
||||||
|
private static String bussi_package = "com.enjoy.oqc";
|
||||||
|
//生成项目目录
|
||||||
|
private static String project_path = "E:\\workspace_2\\enjoy\\qms\\enjoy-oqc\\src\\main\\java\\";
|
||||||
|
|
||||||
|
private static String project_resource_mapper_path = "E:\\workspace_2\\enjoy\\qms\\enjoy-oqc\\src\\main\\resources\\mapper\\oqc\\";
|
||||||
|
|
||||||
|
//实体类模板
|
||||||
|
private static String bussi_entity_template = "XXXEntity.javai";
|
||||||
|
private static String bussi_entity_dto_template = "XXXEntityDto.javai";
|
||||||
|
private static String bussi_entity_vo_template = "XXXEntityVo.javai";
|
||||||
|
|
||||||
|
//mapper模板
|
||||||
|
private static String bussi_mapper_template = "XXXMapper.javai";
|
||||||
|
//mapper.xml模板
|
||||||
|
private static String bussi_mapperxml_template = "XXXMapper.xmli";
|
||||||
|
//service 模板
|
||||||
|
private static String bussi_service_template = "XXXService.javai";
|
||||||
|
private static String bussi_serviceimpl_template = "XXXServiceImpl.javai";
|
||||||
|
//controller
|
||||||
|
private static String bussi_controller_template = "XXXController.javai";
|
||||||
|
|
||||||
|
//模板所在目录
|
||||||
|
private static String templatepath = "/yangliu/";
|
||||||
|
|
||||||
|
private static String author = "yangliu";
|
||||||
|
// postgresql或mysql
|
||||||
|
private static String dbType = "postgresql";
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
String driver = "org.postgresql.Driver";
|
||||||
|
String url = "jdbc:postgresql://10.201.145.19:35432/enjoy-oqc?stringtype=unspecified&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false";
|
||||||
|
String user = "enjoy";
|
||||||
|
String password = "Nomi1234";
|
||||||
|
List<TableEntityVo> tableEntityVoList = printTableStructure(driver, url, user, password, "oqc_project");
|
||||||
|
|
||||||
|
generate(bussi_package, "oqc_spot_check_record", "OqcSpotCheckRecord","抽检记录表", tableEntityVoList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param bussiPackage
|
||||||
|
* @param tableName
|
||||||
|
* @param entityName
|
||||||
|
* @param originalColumns
|
||||||
|
*/
|
||||||
|
private static void generate(String bussiPackage, String tableName, String entityName,String description, List<TableEntityVo> originalColumns) {
|
||||||
|
TableVo tableVo = new TableVo();
|
||||||
|
tableVo.setFtlDescription(description);
|
||||||
|
//包名
|
||||||
|
Map<String, Object> dataMap = new HashMap<>();
|
||||||
|
dataMap.put("bussiPackage", bussiPackage);//包
|
||||||
|
dataMap.put("entityPackage", "domain");
|
||||||
|
dataMap.put("tableName", tableName);//表名称
|
||||||
|
dataMap.put("tableVo", tableVo);//表属性
|
||||||
|
//主键
|
||||||
|
dataMap.put("primaryKeyField", "id");
|
||||||
|
|
||||||
|
dataMap.put("entityName", entityName);//实体类名称
|
||||||
|
dataMap.put("author", author);//作者
|
||||||
|
dataMap.put("originalColumns", originalColumns);//字段
|
||||||
|
|
||||||
|
StringBuffer parsePath = new StringBuffer(project_path);
|
||||||
|
if (StringUtils.isNotBlank(bussi_package)) {
|
||||||
|
String[] bussiPackageSplit = bussi_package.split("\\.");
|
||||||
|
for (String bpackage : bussiPackageSplit) {
|
||||||
|
parsePath = parsePath.append(bpackage).append(File.separator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//生成实体类
|
||||||
|
String entityParsePath = parsePath + (String) dataMap.get("entityPackage") + File.separator;
|
||||||
|
MarkerGenerate.generate(templatepath, bussi_entity_template, entityParsePath, entityName + ".java", dataMap);
|
||||||
|
String dtoParsePath = parsePath + "dto" + File.separator;
|
||||||
|
MarkerGenerate.generate(templatepath, bussi_entity_dto_template, dtoParsePath, entityName + "Dto.java", dataMap);
|
||||||
|
String voParsePath = parsePath + "vo" + File.separator;
|
||||||
|
MarkerGenerate.generate(templatepath, bussi_entity_vo_template, voParsePath, entityName + "Vo.java", dataMap);
|
||||||
|
|
||||||
|
//生成Mapper
|
||||||
|
String mapperParsePath = parsePath + "mapper" + File.separator;
|
||||||
|
MarkerGenerate.generate(templatepath, bussi_mapper_template, mapperParsePath, entityName + "Mapper.java", dataMap);
|
||||||
|
//生成Mapper.xml
|
||||||
|
String mapperXmlParsePath = project_resource_mapper_path;
|
||||||
|
MarkerGenerate.generate(templatepath, bussi_mapperxml_template, mapperXmlParsePath, entityName + "Mapper.xml", dataMap);
|
||||||
|
//生成Service
|
||||||
|
String serviceParsePath = parsePath + "service" + File.separator;
|
||||||
|
MarkerGenerate.generate(templatepath,bussi_service_template,serviceParsePath,String.format("I%sService.java",entityName),dataMap);
|
||||||
|
//生成ServiceImpl
|
||||||
|
String serviceImplParsePath = serviceParsePath+"impl"+File.separator;
|
||||||
|
MarkerGenerate.generate(templatepath,bussi_serviceimpl_template,serviceImplParsePath,String.format("%sServiceImpl.java",entityName),dataMap);
|
||||||
|
//生成Controller
|
||||||
|
String controllerParsePath = parsePath + "controller" + File.separator;
|
||||||
|
MarkerGenerate.generate(templatepath,bussi_controller_template,controllerParsePath,String.format("%sController.java",entityName),dataMap);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印所有表结构
|
||||||
|
*
|
||||||
|
* @param driver driver
|
||||||
|
* @param url url
|
||||||
|
* @param user user
|
||||||
|
* @param password password
|
||||||
|
* @throws Exception exception
|
||||||
|
*/
|
||||||
|
private static List<TableEntityVo> printTableStructure(String driver, String url, String user, String password, String table) throws Exception {
|
||||||
|
Class.forName(driver);
|
||||||
|
Connection connection = DriverManager.getConnection(url, user, password);
|
||||||
|
|
||||||
|
DatabaseMetaData metaData = connection.getMetaData();
|
||||||
|
// 获取所有表
|
||||||
|
//ResultSet tableResultSet = metaData.getTables(null, null, table+"%", new String[]{"TABLE"});
|
||||||
|
//单表
|
||||||
|
ResultSet tableResultSet = metaData.getTables(null, null, table, new String[]{"TABLE"});
|
||||||
|
List<TableEntityVo> tableEntityVoList = new ArrayList<>();
|
||||||
|
while (tableResultSet.next()) {
|
||||||
|
String tableName = tableResultSet.getString("TABLE_NAME");
|
||||||
|
System.out.println("table:" + tableName);
|
||||||
|
// 获取表字段结构
|
||||||
|
ResultSet columnResultSet = metaData.getColumns(null, "%", tableName, "%");
|
||||||
|
while (columnResultSet.next()) {
|
||||||
|
// 字段名称
|
||||||
|
String columnName = columnResultSet.getString("COLUMN_NAME");
|
||||||
|
// 数据类型
|
||||||
|
String columnType = columnResultSet.getString("TYPE_NAME");
|
||||||
|
// 字段长度
|
||||||
|
int datasize = columnResultSet.getInt("COLUMN_SIZE");
|
||||||
|
// 小数部分位数
|
||||||
|
int digits = columnResultSet.getInt("DECIMAL_DIGITS");
|
||||||
|
// 是否可为空 1代表可空 0代表不可为空
|
||||||
|
int nullable = columnResultSet.getInt("NULLABLE");
|
||||||
|
// 描述
|
||||||
|
String remarks = columnResultSet.getString("REMARKS");
|
||||||
|
System.out.println(columnName + " " + columnType + " " + datasize + " " + digits + " " + nullable + " " + remarks);
|
||||||
|
//System.out.println("1"+TableFieldUtil.fieldTypeParseJava(dbType,columnType));
|
||||||
|
String entityField = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, columnName);
|
||||||
|
tableEntityVoList.add(new TableEntityVo(entityField, TableFieldUtil.fieldTypeParseJava(dbType, columnType), columnType, remarks));
|
||||||
|
}
|
||||||
|
System.out.println("=================================");
|
||||||
|
}
|
||||||
|
return tableEntityVoList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package org.yangliu.codegenerate.entity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description
|
||||||
|
* @Author ZhouWenTao
|
||||||
|
* @Date 2023/8/13 20:44
|
||||||
|
*/
|
||||||
|
public class TableEntityVo {
|
||||||
|
//字段
|
||||||
|
private String fieldName;
|
||||||
|
private String fieldType;
|
||||||
|
//字段类型
|
||||||
|
private String fieldDbType;
|
||||||
|
//字段描述
|
||||||
|
private String filedComment;
|
||||||
|
|
||||||
|
|
||||||
|
public TableEntityVo() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public TableEntityVo(String fieldName,String fieldType,String fieldDbType,String filedComment) {
|
||||||
|
this.filedComment = filedComment;
|
||||||
|
this.fieldName = fieldName;
|
||||||
|
this.fieldType = fieldType;
|
||||||
|
this.fieldDbType = fieldDbType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFiledComment() {
|
||||||
|
return filedComment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFiledComment(String filedComment) {
|
||||||
|
this.filedComment = filedComment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFieldName() {
|
||||||
|
return fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldName(String fieldName) {
|
||||||
|
this.fieldName = fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFieldDbType() {
|
||||||
|
return fieldDbType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldDbType(String fieldDbType) {
|
||||||
|
this.fieldDbType = fieldDbType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFieldType() {
|
||||||
|
return fieldType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldType(String fieldType) {
|
||||||
|
this.fieldType = fieldType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "TableEntityVo{" +
|
||||||
|
"fieldName='" + fieldName + '\'' +
|
||||||
|
", fieldType='" + fieldType + '\'' +
|
||||||
|
", fieldDbType='" + fieldDbType + '\'' +
|
||||||
|
", filedComment='" + filedComment + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package org.yangliu.codegenerate.entity;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description
|
||||||
|
* @Author ZhouWenTao
|
||||||
|
* @Date 2023/8/13 21:43
|
||||||
|
*/
|
||||||
|
public class TableVo implements Serializable {
|
||||||
|
//表描述
|
||||||
|
private String ftlDescription;
|
||||||
|
|
||||||
|
|
||||||
|
public String getFtlDescription() {
|
||||||
|
return ftlDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFtlDescription(String ftlDescription) {
|
||||||
|
this.ftlDescription = ftlDescription;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,91 @@
|
|||||||
|
package org.yangliu.codegenerate.util;
|
||||||
|
|
||||||
|
import freemarker.cache.ClassTemplateLoader;
|
||||||
|
import freemarker.core.XMLOutputFormat;
|
||||||
|
import freemarker.template.Configuration;
|
||||||
|
import freemarker.template.Template;
|
||||||
|
import freemarker.template.TemplateException;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.yangliu.codegenerate.Main;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description
|
||||||
|
* @Author ZhouWenTao
|
||||||
|
* @Date 2023/8/13 21:04
|
||||||
|
*/
|
||||||
|
public class MarkerGenerate {
|
||||||
|
public static void generate(String basePackagePath,String templateName,String parsePath,String fileName,Map<String,Object> dataMap) {
|
||||||
|
String entityName = (String) dataMap.get("entityName");
|
||||||
|
if (StringUtils.isNotBlank(entityName)) {
|
||||||
|
dataMap.put("uncap_first",StringUtils.uncapitalize(entityName));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建生成文件所在目录
|
||||||
|
folderCreate(parsePath);
|
||||||
|
|
||||||
|
//第一步:创建一个 Configuration 对象,直接 new 一个对象。构造方法的参数就是 freemarker的版本号。
|
||||||
|
Configuration configuration = new Configuration(Configuration.getVersion());
|
||||||
|
//第二步:设置模板文件所在的路径。
|
||||||
|
configuration.setTemplateLoader(new ClassTemplateLoader(Main.class,basePackagePath));
|
||||||
|
//第三步:设置模板文件使用的字符集。一般就是 utf-8.
|
||||||
|
configuration.setDefaultEncoding("UTF-8");
|
||||||
|
configuration.setOutputFormat(XMLOutputFormat.INSTANCE);
|
||||||
|
//第四步:加载一个模板,创建一个模板对象。
|
||||||
|
Template template = null;
|
||||||
|
try {
|
||||||
|
template = configuration.getTemplate(templateName);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
String outPut=parsePath+fileName;
|
||||||
|
FileWriter fileWriter = null;
|
||||||
|
try {
|
||||||
|
fileWriter = new FileWriter(outPut);
|
||||||
|
// 第七步:调用模板对象的 process 方法输出文件。
|
||||||
|
template.process(dataMap,fileWriter);
|
||||||
|
// 第八步:关闭流
|
||||||
|
fileWriter.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (TemplateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void folderCreate(String folder){
|
||||||
|
if (StringUtils.isNotBlank(folder)) {
|
||||||
|
File file =new File(folder);
|
||||||
|
if (file.exists()) {
|
||||||
|
if (file.isDirectory()) {
|
||||||
|
System.out.println("dir exists");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("the same name file exists, can not create dir");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
System.out.println("dir not exists, create it ...");
|
||||||
|
file.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*String[] folderSpilt = folder.split(File.separator);
|
||||||
|
StringBuffer sb=new StringBuffer();
|
||||||
|
for (String f : folderSpilt) {
|
||||||
|
sb=sb.append(f);
|
||||||
|
File file=new File(sb.toString());
|
||||||
|
if (!file.exists()) {
|
||||||
|
try {
|
||||||
|
file.createNewFile();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package org.yangliu.codegenerate.util;
|
||||||
|
|
||||||
|
import org.yangliu.codegenerate.util.fieldType.DbColumnType;
|
||||||
|
import org.yangliu.codegenerate.util.fieldType.MySqlTypeConvert;
|
||||||
|
import org.yangliu.codegenerate.util.fieldType.PostgreSqlTypeConvert;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description
|
||||||
|
* @Author ZhouWenTao
|
||||||
|
* @Date 2023/8/13 21:54
|
||||||
|
*/
|
||||||
|
public class TableFieldUtil {
|
||||||
|
private static List<String> strArray= Arrays.asList("char","varchar","text","xml");
|
||||||
|
|
||||||
|
|
||||||
|
private static List<String> integerArray= Arrays.asList("int","int2","int4","int8","text","xml");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将 数据库字段类型转成 java类型
|
||||||
|
* @param fieldType
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String fieldTypeParseJava(String databaseType,String fieldType){
|
||||||
|
if (databaseType.equals("mysql")) {
|
||||||
|
DbColumnType dbColumnType = MySqlTypeConvert.processTypeConvert(fieldType);
|
||||||
|
return dbColumnType.getType();
|
||||||
|
}else if(databaseType.equals("postgresql")){
|
||||||
|
DbColumnType dbColumnType = PostgreSqlTypeConvert.processTypeConvert(fieldType);
|
||||||
|
return dbColumnType.getType();
|
||||||
|
}
|
||||||
|
System.out.println("暂不支持该数据库");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
package org.yangliu.codegenerate.util.fieldType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description
|
||||||
|
* @Author ZhouWenTao
|
||||||
|
* @Date 2023/8/13 22:01
|
||||||
|
*/
|
||||||
|
public enum DbColumnType {
|
||||||
|
BASE_INT("int", (String)null),
|
||||||
|
BASE_BOOLEAN("boolean", (String)null),
|
||||||
|
BASE_FLOAT("float", (String)null),
|
||||||
|
BASE_DOUBLE("double", (String)null),
|
||||||
|
STRING("String", (String)null),
|
||||||
|
LONG("Long", (String)null),
|
||||||
|
INTEGER("Integer", (String)null),
|
||||||
|
FLOAT("Float", (String)null),
|
||||||
|
DOUBLE("Double", (String)null),
|
||||||
|
BOOLEAN("Boolean", (String)null),
|
||||||
|
BYTE_ARRAY("byte[]", (String)null),
|
||||||
|
CHARACTER("Character", (String)null),
|
||||||
|
OBJECT("Object", (String)null),
|
||||||
|
DATE("Date", "java.util.Date"),
|
||||||
|
TIME("Time", "java.sql.Time"),
|
||||||
|
BLOB("Blob", "java.sql.Blob"),
|
||||||
|
CLOB("Clob", "java.sql.Clob"),
|
||||||
|
TIMESTAMP("Timestamp", "java.sql.Timestamp"),
|
||||||
|
BIG_INTEGER("BigInteger", "java.math.BigInteger"),
|
||||||
|
BIG_DECIMAL("BigDecimal", "java.math.BigDecimal"),
|
||||||
|
LOCAL_DATE("LocalDate", "java.time.LocalDate"),
|
||||||
|
LOCAL_TIME("LocalTime", "java.time.LocalTime"),
|
||||||
|
LOCAL_DATE_TIME("LocalDateTime", "java.time.LocalDateTime");
|
||||||
|
|
||||||
|
private final String type;
|
||||||
|
private final String pkg;
|
||||||
|
|
||||||
|
private DbColumnType(String type, String pkg) {
|
||||||
|
this.type = type;
|
||||||
|
this.pkg = pkg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return this.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPkg() {
|
||||||
|
return this.pkg;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package org.yangliu.codegenerate.util.fieldType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description mysql字段类型转java类型的方法代码
|
||||||
|
* @Author ZhouWenTao
|
||||||
|
* @Date 2023/8/13 22:00
|
||||||
|
*/
|
||||||
|
public class MySqlTypeConvert {
|
||||||
|
public MySqlTypeConvert() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mysql字段类型转java类型
|
||||||
|
* @param fieldType mysql字段类型
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static DbColumnType processTypeConvert(String fieldType) {
|
||||||
|
String t = fieldType.toLowerCase();
|
||||||
|
if (!t.contains("char") && !t.contains("text")) {
|
||||||
|
if (t.contains("bigint")) {
|
||||||
|
return DbColumnType.LONG;
|
||||||
|
} else if (t.contains("int")) {
|
||||||
|
return DbColumnType.INTEGER;
|
||||||
|
} else if (!t.contains("date") && !t.contains("time") && !t.contains("year")) {
|
||||||
|
if (t.contains("text")) {
|
||||||
|
return DbColumnType.STRING;
|
||||||
|
} else if (t.contains("bit")) {
|
||||||
|
return DbColumnType.BOOLEAN;
|
||||||
|
} else if (t.contains("decimal")) {
|
||||||
|
return DbColumnType.BIG_DECIMAL;
|
||||||
|
} else if (t.contains("clob")) {
|
||||||
|
return DbColumnType.CLOB;
|
||||||
|
} else if (t.contains("blob")) {
|
||||||
|
return DbColumnType.BLOB;
|
||||||
|
} else if (t.contains("binary")) {
|
||||||
|
return DbColumnType.BYTE_ARRAY;
|
||||||
|
} else if (t.contains("float")) {
|
||||||
|
return DbColumnType.FLOAT;
|
||||||
|
} else if (t.contains("double")) {
|
||||||
|
return DbColumnType.DOUBLE;
|
||||||
|
} else {
|
||||||
|
return !t.contains("json") && !t.contains("enum") ? DbColumnType.STRING : DbColumnType.STRING;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return DbColumnType.DATE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return DbColumnType.STRING;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
package org.yangliu.codegenerate.util.fieldType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description pgsql字段类型转java类型的方法代码
|
||||||
|
* @Author ZhouWenTao
|
||||||
|
* @Date 2023/8/13 22:01
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class PostgreSqlTypeConvert {
|
||||||
|
public PostgreSqlTypeConvert() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DbColumnType processTypeConvert(String fieldType) {
|
||||||
|
String t = fieldType.toLowerCase();
|
||||||
|
if (!t.contains("char") && !t.contains("text")) {
|
||||||
|
if (t.contains("bigint")) {
|
||||||
|
return DbColumnType.LONG;
|
||||||
|
} else if (t.contains("int")) {
|
||||||
|
return DbColumnType.INTEGER;
|
||||||
|
} else if (!t.contains("date") && !t.contains("time") && !t.contains("year")) {
|
||||||
|
if (t.contains("text")) {
|
||||||
|
return DbColumnType.STRING;
|
||||||
|
} else if (t.contains("bit")) {
|
||||||
|
return DbColumnType.BOOLEAN;
|
||||||
|
} else if (t.contains("decimal")) {
|
||||||
|
return DbColumnType.BIG_DECIMAL;
|
||||||
|
} else if (t.contains("clob")) {
|
||||||
|
return DbColumnType.CLOB;
|
||||||
|
} else if (t.contains("blob")) {
|
||||||
|
return DbColumnType.BYTE_ARRAY;
|
||||||
|
} else if (t.contains("float")) {
|
||||||
|
return DbColumnType.FLOAT;
|
||||||
|
} else if (t.contains("double")) {
|
||||||
|
return DbColumnType.DOUBLE;
|
||||||
|
} else if (!t.contains("json") && !t.contains("enum")) {
|
||||||
|
return t.contains("boolean") ? DbColumnType.BOOLEAN : DbColumnType.STRING;
|
||||||
|
} else {
|
||||||
|
return DbColumnType.STRING;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return DbColumnType.DATE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return DbColumnType.STRING;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,142 @@
|
|||||||
|
package ${bussiPackage}.controller;
|
||||||
|
|
||||||
|
import com.enjoy.common.core.web.controller.BaseController;
|
||||||
|
import com.enjoy.common.core.web.domain.AjaxResult;
|
||||||
|
import com.enjoy.common.core.web.page.TableDataInfo;
|
||||||
|
import com.enjoy.common.log.annotation.Log;
|
||||||
|
import com.enjoy.common.log.enums.BusinessType;
|
||||||
|
import ${bussiPackage}.${entityPackage}.${entityName};
|
||||||
|
import ${bussiPackage}.dto.${entityName}Dto;
|
||||||
|
import ${bussiPackage}.vo.${entityName}Vo;
|
||||||
|
import ${bussiPackage}.service.I${entityName}Service;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.net.URLDecoder;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiImplicitParams;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: ${tableVo.ftlDescription}
|
||||||
|
* @Author: ${author}
|
||||||
|
* @Date: ${.now?string["yyyy-MM-dd"]}
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags="${tableVo.ftlDescription}")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/${entityName?uncap_first}")
|
||||||
|
public class ${entityName}Controller extends BaseController {
|
||||||
|
@Autowired
|
||||||
|
private I${entityName}Service ${entityName?uncap_first}Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页列表查询
|
||||||
|
*
|
||||||
|
* @param ${entityName?uncap_first}
|
||||||
|
* @param pageNo
|
||||||
|
* @param pageSize
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation(value="${tableVo.ftlDescription}-分页列表查询", notes="${tableVo.ftlDescription}-分页列表查询")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "pageNo", value = "分页参数:当前页", dataType = "String", paramType = "query"),
|
||||||
|
@ApiImplicitParam(name = "pageSize", value = "分页参数:每页数量", dataType = "String", paramType = "query")
|
||||||
|
})
|
||||||
|
@GetMapping(value = "/list")
|
||||||
|
public TableDataInfo queryPageList(${entityName} ${entityName?uncap_first},
|
||||||
|
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||||
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||||
|
HttpServletRequest req) {
|
||||||
|
startPage();
|
||||||
|
List<${entityName}> list = ${entityName?uncap_first}Service.list();
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ${tableVo.ftlDescription}-查询所有数据
|
||||||
|
*/
|
||||||
|
@ApiOperation("${tableVo.ftlDescription}-查询所有数据")
|
||||||
|
@GetMapping("/listAll")
|
||||||
|
public AjaxResult listAll() {
|
||||||
|
return AjaxResult.success(${entityName?uncap_first}Service.list());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取${tableVo.ftlDescription}
|
||||||
|
*/
|
||||||
|
@ApiOperation("获取${tableVo.ftlDescription}")
|
||||||
|
@GetMapping(value = "/{id}")
|
||||||
|
public AjaxResult getInfo(@PathVariable("id") String id) {
|
||||||
|
return AjaxResult.success(${entityName?uncap_first}Service.getById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加
|
||||||
|
*
|
||||||
|
* @param ${entityName?uncap_first}
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation(value="${tableVo.ftlDescription}-添加", notes="${tableVo.ftlDescription}-添加")
|
||||||
|
@Log(title = "${tableVo.ftlDescription}-添加", businessType = BusinessType.INSERT)
|
||||||
|
@PostMapping(value = "/add")
|
||||||
|
public AjaxResult add(@RequestBody ${entityName} ${entityName?uncap_first}) {
|
||||||
|
${entityName?uncap_first}Service.save(${entityName?uncap_first});
|
||||||
|
return AjaxResult.success("添加成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑
|
||||||
|
*
|
||||||
|
* @param ${entityName?uncap_first}
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Log(title = "${tableVo.ftlDescription}-编辑", businessType = BusinessType.UPDATE)
|
||||||
|
@ApiOperation(value="${tableVo.ftlDescription}-编辑", notes="${tableVo.ftlDescription}-编辑")
|
||||||
|
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
|
||||||
|
public AjaxResult edit(@RequestBody ${entityName} ${entityName?uncap_first}) {
|
||||||
|
${entityName?uncap_first}Service.updateById(${entityName?uncap_first});
|
||||||
|
return AjaxResult.success("编辑成功!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过id删除
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Log(title = "${tableVo.ftlDescription}-通过id删除", businessType = BusinessType.DELETE)
|
||||||
|
@ApiOperation(value="${tableVo.ftlDescription}-通过id删除", notes="${tableVo.ftlDescription}-通过id删除")
|
||||||
|
@DeleteMapping(value = "/delete")
|
||||||
|
public AjaxResult delete(@RequestParam(name="id",required=true) String id) {
|
||||||
|
${entityName?uncap_first}Service.removeById(id);
|
||||||
|
return AjaxResult.success("删除成功!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除
|
||||||
|
*
|
||||||
|
* @param ids
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Log(title = "${tableVo.ftlDescription}-批量删除", businessType = BusinessType.DELETE)
|
||||||
|
@ApiOperation(value="${tableVo.ftlDescription}-批量删除", notes="${tableVo.ftlDescription}-批量删除")
|
||||||
|
@DeleteMapping(value = "/deleteBatch")
|
||||||
|
public AjaxResult deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||||
|
this.${entityName?uncap_first}Service.removeByIds(Arrays.asList(ids.split(",")));
|
||||||
|
return AjaxResult.success("批量删除成功!");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,68 @@
|
|||||||
|
package ${bussiPackage}.${entityPackage};
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||||
|
import com.enjoy.common.core.web.domain.BaseEntity;
|
||||||
|
import com.enjoy.common.core.annotation.Excel;
|
||||||
|
import com.enjoy.common.core.utils.iqc.ExcelImport;
|
||||||
|
import com.enjoy.common.core.web.domain.BaseEntity;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.*;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: ${tableVo.ftlDescription}
|
||||||
|
* @Author: ${author}
|
||||||
|
* @Date: ${.now?string["yyyy-MM-dd"]}
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@ApiModel(value="${tableName}对象", description="${tableVo.ftlDescription}")
|
||||||
|
@TableName("${tableName}")
|
||||||
|
public class ${entityName} extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
<#list originalColumns as po>
|
||||||
|
/**${po.filedComment}*/
|
||||||
|
<#if po.fieldName == primaryKeyField>
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
<#else>
|
||||||
|
<#if po.fieldType =='Date'>
|
||||||
|
<#if po.fieldDbType =='date'>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 15)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||||
|
<#elseif po.fieldDbType =='datetime'>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 20)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
<#elseif po.fieldDbType =='timestamp'>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 20)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
</#if>
|
||||||
|
<#else>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 15)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
@ApiModelProperty(value = "${po.filedComment}",example = "${po.filedComment}")
|
||||||
|
<#if po.fieldName == 'delFlag'>
|
||||||
|
@TableLogic
|
||||||
|
</#if>
|
||||||
|
private <#if po.fieldType=='java.sql.Blob'>byte[]<#else>${po.fieldType}</#if> ${po.fieldName};
|
||||||
|
</#list>
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
package ${bussiPackage}.dto;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.enjoy.common.core.annotation.Excel;
|
||||||
|
import com.enjoy.common.core.utils.iqc.ExcelImport;
|
||||||
|
import com.enjoy.common.core.web.domain.BaseEntity;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.*;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: ${tableVo.ftlDescription}
|
||||||
|
* @Author: ${author}
|
||||||
|
* @Date: ${.now?string["yyyy-MM-dd"]}
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@ApiModel(value="${tableName}对象", description="${tableVo.ftlDescription}")
|
||||||
|
public class ${entityName}Dto{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
<#list originalColumns as po>
|
||||||
|
/**${po.filedComment}*/
|
||||||
|
<#if po.fieldName == primaryKeyField>
|
||||||
|
<#else>
|
||||||
|
<#if po.fieldType =='Date'>
|
||||||
|
<#if po.fieldDbType =='date'>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 15)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||||
|
<#elseif po.fieldDbType =='datetime'>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 20)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
<#elseif po.fieldDbType =='timestamp'>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 20)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
</#if>
|
||||||
|
<#else>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 15)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
@ApiModelProperty(value = "${po.filedComment}",example = "${po.filedComment}")
|
||||||
|
private <#if po.fieldType=='java.sql.Blob'>byte[]<#else>${po.fieldType}</#if> ${po.fieldName};
|
||||||
|
</#list>
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
package ${bussiPackage}.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.enjoy.common.core.annotation.Excel;
|
||||||
|
import com.enjoy.common.core.utils.iqc.ExcelImport;
|
||||||
|
import com.enjoy.common.core.web.domain.BaseEntity;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.*;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: ${tableVo.ftlDescription}
|
||||||
|
* @Author: ${author}
|
||||||
|
* @Date: ${.now?string["yyyy-MM-dd"]}
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@ApiModel(value="${tableName}对象", description="${tableVo.ftlDescription}")
|
||||||
|
public class ${entityName}Vo{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
<#list originalColumns as po>
|
||||||
|
/**${po.filedComment}*/
|
||||||
|
<#if po.fieldName == primaryKeyField>
|
||||||
|
<#else>
|
||||||
|
<#if po.fieldType =='Date'>
|
||||||
|
<#if po.fieldDbType =='date'>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 15)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||||
|
<#elseif po.fieldDbType =='datetime'>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 20)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
<#elseif po.fieldDbType =='timestamp'>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 20)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
</#if>
|
||||||
|
<#else>
|
||||||
|
@Excel(name = "${po.filedComment}", width = 15)
|
||||||
|
@ExcelImport("${po.filedComment}")
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
@ApiModelProperty(value = "${po.filedComment}",example = "${po.filedComment}")
|
||||||
|
private <#if po.fieldType=='java.sql.Blob'>byte[]<#else>${po.fieldType}</#if> ${po.fieldName};
|
||||||
|
</#list>
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package ${bussiPackage}.mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import ${bussiPackage}.${entityPackage}.${entityName};
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: ${tableVo.ftlDescription}
|
||||||
|
* @Author: ${author}
|
||||||
|
* @Date: ${.now?string["yyyy-MM-dd"]}
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
public interface ${entityName}Mapper extends BaseMapper<${entityName}> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="${bussiPackage}.mapper.${entityName}Mapper">
|
||||||
|
|
||||||
|
</mapper>
|
@ -0,0 +1,14 @@
|
|||||||
|
package ${bussiPackage}.service;
|
||||||
|
|
||||||
|
import ${bussiPackage}.${entityPackage}.${entityName};
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: ${tableVo.ftlDescription}
|
||||||
|
* @Author: ${author}
|
||||||
|
* @Date: ${.now?string["yyyy-MM-dd"]}
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
public interface I${entityName}Service extends IService<${entityName}> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package ${bussiPackage}.service.impl;
|
||||||
|
|
||||||
|
import ${bussiPackage}.${entityPackage}.${entityName};
|
||||||
|
import ${bussiPackage}.mapper.${entityName}Mapper;
|
||||||
|
import ${bussiPackage}.service.I${entityName}Service;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: ${tableVo.ftlDescription}
|
||||||
|
* @Author: ${author}
|
||||||
|
* @Date: ${.now?string["yyyy-MM-dd"]}
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ${entityName}ServiceImpl extends ServiceImpl<${entityName}Mapper, ${entityName}> implements I${entityName}Service {
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in new issue