代码生成优化

This commit is contained in:
RuoYi
2018-11-21 23:37:09 +08:00
parent 4fed9a1e50
commit c96b73bbda
11 changed files with 284 additions and 39 deletions

View File

@ -0,0 +1,72 @@
package com.ruoyi.generator.domain;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
/**
* 字段类型配置 由数据库字段的注释解析而来
* 注释结构示例:{"title": "状态", "type": "dict", "value": "sys_common_status"} {"title": "登录时间", "type": "date"}
*
* @author ruoyi
*
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class ColumnConfigInfo
{
/**
* 属性标题
*/
private String title;
/**
* 属性类型 dict(字典value对应字典管理的字典类型), date(包括date)
*/
private String type;
/**
* 属性值,参考数据类型,可为空
*/
private String value;
public ColumnConfigInfo()
{
super();
}
public ColumnConfigInfo(String title, String type, String value)
{
super();
this.title = title;
this.type = type;
this.value = value;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
public String getValue()
{
return value;
}
public void setValue(String value)
{
this.value = value;
}
}

View File

@ -1,5 +1,8 @@
package com.ruoyi.generator.domain;
import com.ruoyi.common.json.JSON;
import com.ruoyi.common.utils.StringUtils;
/**
* ry数据库表列信息
*
@ -15,6 +18,9 @@ public class ColumnInfo
/** 列描述 */
private String columnComment;
/** 列配置 */
private ColumnConfigInfo configInfo;
/** Java属性类型 */
private String attrType;
@ -50,9 +56,18 @@ public class ColumnInfo
return columnComment;
}
public void setColumnComment(String columnComment)
public void setColumnComment(String columnComment) throws Exception
{
this.columnComment = columnComment;
// 根据列描述解析列的配置信息
if (StringUtils.isNotEmpty(columnComment) && columnComment.startsWith("{"))
{
this.configInfo = JSON.unmarshal(columnComment, ColumnConfigInfo.class);
this.columnComment = configInfo.getTitle();
}
else
{
this.columnComment = columnComment;
}
}
public String getAttrName()
@ -84,4 +99,14 @@ public class ColumnInfo
{
this.attrType = attrType;
}
public ColumnConfigInfo getConfigInfo()
{
return configInfo;
}
public void setConfigInfo(ColumnConfigInfo configInfo)
{
this.configInfo = configInfo;
}
}

View File

@ -23,7 +23,7 @@ public class GenUtils
private static final String PROJECT_PATH = "main/java/com/ruoyi";
/** mybatis空间路径 */
private static final String MYBATIS_PATH = "main/resources/mybatis";
private static final String MYBATIS_PATH = "main/resources/mapper";
/** html空间路径 */
private static final String TEMPLATES_PATH = "main/resources/templates";
@ -69,8 +69,9 @@ public class GenUtils
velocityContext.put("primaryKey", table.getPrimaryKey());
velocityContext.put("className", table.getClassName());
velocityContext.put("classname", table.getClassname());
velocityContext.put("moduleName", GenUtils.getModuleName(packageName));
velocityContext.put("moduleName", getModuleName(packageName));
velocityContext.put("columns", table.getColumns());
velocityContext.put("basePackage", getBasePackage(packageName));
velocityContext.put("package", packageName);
velocityContext.put("author", Global.getAuthor());
velocityContext.put("datetime", DateUtils.getDate());
@ -144,7 +145,7 @@ public class GenUtils
if (template.contains("ServiceImpl.java.vm"))
{
return javaPath + "service" + "/" + className + "ServiceImpl.java";
return javaPath + "service" + "/" + "/impl/" + className + "ServiceImpl.java";
}
if (template.contains("Controller.java.vm"))
@ -190,6 +191,13 @@ public class GenUtils
return moduleName;
}
public static String getBasePackage(String packageName)
{
int lastIndex = packageName.lastIndexOf(".");
String basePackage = StringUtils.substring(packageName, 0, lastIndex);
return basePackage;
}
public static String replaceKeyword(String keyword)
{
String keyName = keyword.replaceAll("(?:表|信息)", "");
@ -224,6 +232,6 @@ public class GenUtils
{
System.out.println(StringUtils.convertToCamelCase("user_name"));
System.out.println(replaceKeyword("岗位信息表"));
System.out.println(getModuleName("com.ruoyi.system"));
System.out.println(getBasePackage("com.ruoyi.system"));
}
}