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

enhanced.mybaits.generator.codegen.AbstractMethodGenerator Maven / Gradle / Ivy


package enhanced.mybaits.generator.codegen;

import enhanced.mybaits.generator.EnhanceConstant;
import enhanced.mybaits.generator.MixedContext;
import org.apache.commons.lang3.StringUtils;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.codegen.AbstractGenerator;
import org.mybatis.generator.internal.util.JavaBeansUtil;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 方法生成器基类
 * @author 徐明龙 XuMingLong 
 */
public abstract class AbstractMethodGenerator extends AbstractGenerator {
    /**
     * 混合的上下文对象
     * @author 徐明龙 XuMingLong 
     */
    protected MixedContext mixedContext;
    
    public AbstractMethodGenerator(MixedContext mixedContext) {
        this.mixedContext = mixedContext;
    }
    
    /**
     * 增加方法
     * @author 徐明龙 XuMingLong 
     */
    public abstract void addMethod() ;
    
    /** 
     * 获取拼接的关键字列表Java字段名称
     * @author 徐明龙 XuMingLong 
     * @param joinStr 连接的字符串
     * @param convertToCapitalize 是否转换为首字母大写的驼峰命名
     * @return 拼接的关键字列表Java字段名称
     */
    protected String getJoinedKeyColumnListJavaPropertyName(String joinStr,boolean convertToCapitalize) {
        List nameList = getKeyColumnJavaPropertyNameList() ;
        if(convertToCapitalize) {
            nameList = nameList.stream()
                .map(StringUtils::capitalize)
                .collect(Collectors.toList());
        }
        return StringUtils.join(nameList, joinStr);
            
    }
    
    /**
     * 返回自增字段的Java属性名
     * @author 徐明龙 XuMingLong 2018-11-27 
     * @return 返回自增字段的Java属性名
     */
    protected String getAutoIncrementKeyName() {
        this.introspectedTable.getGeneratedKey().ifPresent(gk->{
            JavaBeansUtil.getValidPropertyName(gk.getColumn());
        });
        return null;
    }
    
    /**
     * 获取关键字的名称列表
     * @author 徐明龙 XuMingLong 
     * @return 返回关键字的Java属性名称列表
     */
    protected List getKeyColumnJavaPropertyNameList(){
        return this.introspectedTable.getPrimaryKeyColumns()
            .stream()
            .map(IntrospectedColumn::getJavaProperty)
            .collect(Collectors.toList());
    }

    
    /**
     * 获取用户类名参数
     * @author 徐明龙 XuMingLong 
     * @return 返回用户类名
     */
    protected String getUserClassName() {
        return this.context
            .getJavaClientGeneratorConfiguration()
            .getProperty(EnhanceConstant.USER_CLASS_NAME_KEY);
    }
    
    /**
     * 获取标准的校验和处理结果对象
     * @author 徐明龙 XuMingLong 
     * @return 返回标准的检查和处理类对象名称
     */
    protected String getStandardCheckAndHandleDtoClassName() {
        return this.context
            .getJavaClientGeneratorConfiguration()
            .getProperty(EnhanceConstant.STANDARD_CHECK_AND_HANDLE_DTO_CLASS_NAME_KEY);
    }
    
    /**
     * 获取表单验证失败内容参数对象
     * @author 徐明龙 XuMingLong 
     * @return 返回表单内容校验结果对象类名
     */
    protected String getFormValidErrorClassName() {
        return this.context
            .getJavaClientGeneratorConfiguration()
            .getProperty(EnhanceConstant.FORM_VALID_ERROR_CLASS_NAME_KEY);
    }

    /**
     * 返回日期类型
     * @author 徐明龙 XuMingLong 
     * @return 返回新的LocalDateTime类型对象
     */
    public FullyQualifiedJavaType getNewLocalDateTimeType() {
        return new FullyQualifiedJavaType("java.time.LocalDateTime");
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy