All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.wslxm.springbootplus2.manage.gc.generate.util.GenerateServerUtil Maven / Gradle / Ivy

package io.github.wslxm.springbootplus2.manage.gc.generate.util;

import io.github.wslxm.springbootplus2.manage.gc.config.GcConfig;
import io.github.wslxm.springbootplus2.manage.gc.constant.BracketConstant;
import io.github.wslxm.springbootplus2.manage.gc.constant.FieldTypeConstant;
import io.github.wslxm.springbootplus2.manage.gc.utils.GcDataUtil;

/**
 * 生成服务器代码工具
 *
 * @author wangsong
 * @date 2023/08/28
 */
public class GenerateServerUtil {


    private final static String NO = "NO";

    /**
     * 数据库类型对应字段生成
     * 

* 用于 entity+dto+vo+query *

* * @param gcConfig 配置信息 * @param fieldName 字段名 * @param type 字段类型 * @param isTimeStr 时间是否使用字符串,只处理 datetime 字段类型(特殊处理, 主要处理满足 query 范围查询的代码自动生成) */ public static String jxModel(GcConfig gcConfig, String fieldName, String type, Boolean isTimeStr) { isTimeStr = isTimeStr != null && isTimeStr; // 转驼峰模式 fieldName = GcDataUtil.getFieldName(gcConfig, fieldName); String field = ""; // 字段 if (type.equals(FieldTypeConstant.MEDIUMINT) || type.equals(FieldTypeConstant.SMALLINT) || type.equals(FieldTypeConstant.INT) || type.equals(FieldTypeConstant.TINYINT)) { // 整数int field = "private Integer " + fieldName + ";"; } else if (type.equals(FieldTypeConstant.BIGINT)) { // 整数Long field = "private Long " + fieldName + ";"; } else if (type.equals(FieldTypeConstant.VARCHAR) || type.equals(FieldTypeConstant.CHAR)) { // 字符串 field = "private String " + fieldName + ";"; } else if (type.equals(FieldTypeConstant.BINARY) || type.equals(FieldTypeConstant.VARBINARY)) { // 字符串 field = "private String " + fieldName + ";"; } else if (type.equals(FieldTypeConstant.TEXT) || type.equals(FieldTypeConstant.LONG_TEXT) || type.equals(FieldTypeConstant.JSON)) { // 大文本、超大文本、json field = "private String " + fieldName + ";"; } else if (type.equals(FieldTypeConstant.DATETIME) || type.equals(FieldTypeConstant.TIME) || type.equals(FieldTypeConstant.TIMESTAMP) || type.equals(FieldTypeConstant.DATE)) { // 时间 if ((type.equals(FieldTypeConstant.DATETIME) || type.equals(FieldTypeConstant.DATE)) && isTimeStr) { field = "private String " + fieldName + ";"; } else { field = "private LocalDateTime " + fieldName + ";"; } } else if (type.equals(FieldTypeConstant.DOUBLE)) { // 双精度小数 Double field = "private Double " + fieldName + ";"; } else if (type.equals(FieldTypeConstant.FLOAT)) { // 单精度小数 Float field = "private Float " + fieldName + ";"; } else if (type.equals(FieldTypeConstant.DECIMAL)) { // 小数 decimal field = "private BigDecimal " + fieldName + ";"; } // else if (type.equals(FieldTypeConstant.TINYINT)) { // // 布尔 tinyint // field = "private Boolean " + fieldName + ";"; // } return field; } /** * 必填字段获取 jsr303 验证注解, * * @param isNull NO 代表必填, YES 非必填 * @param type 字段类型 * @param typeDetail 字段类型长度, 如: int(11) 在 mysql8.0.16+ 版本后, 删除了 int /bigint 的长度支持 (自动使用最大值) * @param desc 字段备注 * @param isRequired 是否判断必填 true 是 false 否, query 查询中不需要验证必传 */ public static String jsrModel(String isNull, String type, String typeDetail, String desc, boolean isRequired) { String jsr = ""; if ((NO).equals(isNull) && isRequired) { if (type.equals(FieldTypeConstant.VARCHAR) || type.equals(FieldTypeConstant.CHAR) || type.equals(FieldTypeConstant.TEXT) || type.equals(FieldTypeConstant.LONG_TEXT) || type.equals(FieldTypeConstant.BINARY) || type.equals(FieldTypeConstant.VARBINARY) ) { jsr = " @NotBlank(message = \"{DESC} 不能为空\")"; } else { jsr = " @NotNull(message = \"{DESC} 不能为空\")"; } jsr = jsr.replace("\\{DESC}", desc); jsr += "\n"; } // 获取数据库注释,去除括号后的内容 desc = desc.contains(BracketConstant.LEFT_BRACKET) ? desc.substring(0, desc.indexOf(BracketConstant.LEFT_BRACKET)) : desc; desc = desc.contains(BracketConstant.LEFT_BRACKET_TWO) ? desc.substring(0, desc.indexOf(BracketConstant.LEFT_BRACKET_TWO)) : desc; desc = desc.contains(BracketConstant.LEFT_BRACKET_THREE) ? desc.substring(0, desc.indexOf(BracketConstant.LEFT_BRACKET_THREE)) : desc; desc = desc.contains(BracketConstant.LEFT_BRACKET_FOUR) ? desc.substring(0, desc.indexOf(BracketConstant.LEFT_BRACKET_FOUR)) : desc; desc = desc.contains(BracketConstant.LEFT_BRACKET_FIVE) ? desc.substring(0, desc.indexOf(BracketConstant.LEFT_BRACKET_FIVE)) : desc; desc = desc.contains(BracketConstant.LEFT_BRACKET_SIX) ? desc.substring(0, desc.indexOf(BracketConstant.LEFT_BRACKET_SIX)) : desc; //字段 String maxlength = ""; if (type.equals(FieldTypeConstant.INT) || type.equals(FieldTypeConstant.BIGINT) || type.equals(FieldTypeConstant.TINYINT) || type.equals(FieldTypeConstant.SMALLINT) || type.equals(FieldTypeConstant.MEDIUMINT) ) { // 整数 // int(11), 判断是否有长度,存在长度获取指定长度的最大值, 转为long添加到注解中 if (typeDetail.contains(BracketConstant.LEFT_BRACKET)) { int len = Integer.parseInt(typeDetail.substring(typeDetail.indexOf("(") + 1, typeDetail.indexOf(")"))); maxlength = len >= 19 ? Long.MAX_VALUE + "" : GenerateUtil.numberGenerator(9, len, 0); } else { maxlength = GenerateUtil.getDefaultMaxlength(type); } jsr += " @Range(min=0L, max={MAX}L,message = \"{DESC} 必须>=0 和 <={MAX}\")"; jsr = jsr.replaceAll("\\{MAX}", maxlength + "").replace("{DESC}", desc); } else if (type.equals(FieldTypeConstant.DOUBLE) || type.equals(FieldTypeConstant.FLOAT) || type.equals(FieldTypeConstant.DECIMAL)) { // 小数 判断是否有长度,存在长度获取指定长度的最大值, 转为long添加到注解中 decimal(10,2),取10, 2不处理 if (typeDetail.contains(BracketConstant.LEFT_BRACKET)) { String typeDetailStr = typeDetail.substring(typeDetail.indexOf(BracketConstant.LEFT_BRACKET) + 1, typeDetail.indexOf(BracketConstant.RIGHT_BRACKET)); String[] typeDetailStrArray = typeDetailStr.split(","); if (typeDetailStrArray.length > 1) { maxlength = GenerateUtil.numberGenerator(9, Integer.parseInt(typeDetailStrArray[0]), Integer.parseInt(typeDetailStrArray[1])); } else { maxlength = GenerateUtil.numberGenerator(9, Integer.parseInt(typeDetailStrArray[0]), 0); } } else { maxlength = GenerateUtil.getDefaultMaxlength(type); } jsr += " @DecimalMin(value=\"0\",message=\"{DESC} 必须 >= 0\")"; jsr += "\n @DecimalMax(value=\"{MAX}\",message=\"{DESC} 必须 <= {MAX}\")"; jsr = jsr.replaceAll("\\{MAX}", maxlength).replace("{DESC}", desc); } else if (type.equals(FieldTypeConstant.VARCHAR) || type.equals(FieldTypeConstant.CHAR) || type.equals(FieldTypeConstant.TEXT) || type.equals(FieldTypeConstant.LONG_TEXT)) { // 字符串 if (typeDetail.contains(BracketConstant.LEFT_BRACKET)) { maxlength = typeDetail.substring(typeDetail.indexOf(BracketConstant.LEFT_BRACKET) + 1, typeDetail.indexOf(BracketConstant.RIGHT_BRACKET)); } else { maxlength = GenerateUtil.getDefaultMaxlength(type); } jsr += " @Length(min=0, max={MAX},message = \"{DESC} 必须>=0 和 <={MAX}位\")"; jsr = jsr.replaceAll("\\{MAX}", maxlength).replace("{DESC}", desc); } else if (type.equals(FieldTypeConstant.DATETIME) || type.equals(FieldTypeConstant.TIME) || type.equals(FieldTypeConstant.TIMESTAMP)) { // 时间暂无 } return jsr; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy