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

com.kg.component.generator.config.rules.NamingStrategy Maven / Gradle / Ivy

There is a newer version: 1.1.26
Show newest version
/*
 * Copyright (c) 2011-2021, baomidou ([email protected]).
 * 

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* https://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.kg.component.generator.config.rules; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.kg.component.generator.config.ConstVal; import java.util.Arrays; import java.util.Set; /** * 从数据库表到文件的命名策略 * * @author YangHu, tangguo * @since 2016/8/30 */ public enum NamingStrategy { /** * 不做任何改变,原样输出 */ no_change, /** * 下划线转驼峰命名 */ underline_to_camel; /** * 下划线转驼峰 * * @param name 待转内容 */ public static String underlineToCamel(String name) { // 快速检查 if (StringUtils.isBlank(name)) { // 没必要转换 return StringPool.EMPTY; } String tempName = name; // 大写数字下划线组成转为小写 , 允许混合模式转为小写 if (StringUtils.isCapitalMode(name) || StringUtils.isMixedMode(name)) { tempName = name.toLowerCase(); } StringBuilder result = new StringBuilder(); // 用下划线将原始字符串分割 String[] camels = tempName.split(ConstVal.UNDERLINE); // 跳过原始字符串中开头、结尾的下换线或双重下划线 // 处理真正的驼峰片段 Arrays.stream(camels).filter(camel -> !StringUtils.isBlank(camel)).forEach(camel -> { if (result.length() == 0) { // 第一个驼峰片段,首字母都小写 result.append(StringUtils.firstToLowerCase(camel)); } else { // 其他的驼峰片段,首字母大写 result.append(capitalFirst(camel)); } }); return result.toString(); } /** * 去掉指定的前缀 * * @param name 表名 * @param prefix 前缀 * @return 转换后的字符串 */ public static String removePrefix(String name, Set prefix) { if (StringUtils.isBlank(name)) { return StringPool.EMPTY; } // 判断是否有匹配的前缀,然后截取前缀 return prefix.stream().filter(pf -> name.toLowerCase().startsWith(pf.toLowerCase())) .findFirst().map(pf -> name.substring(pf.length())).orElse(name); } /** * 去掉下划线前缀并转成驼峰格式 * * @param name 表名 * @param prefix 前缀 * @return 转换后的字符串 */ public static String removePrefixAndCamel(String name, Set prefix) { return underlineToCamel(removePrefix(name, prefix)); } /** * 去掉指定的后缀 * * @param name 表名 * @param suffix 后缀 * @return 转换后的字符串 */ public static String removeSuffix(String name, Set suffix) { if (StringUtils.isBlank(name)) { return StringPool.EMPTY; } // 判断是否有匹配的后缀,然后截取后缀 return suffix.stream().filter(sf -> name.toLowerCase().endsWith(sf.toLowerCase())) .findFirst().map(sf -> name.substring(0, name.length() - sf.length())).orElse(name); } /** * 去掉下划线后缀并转成驼峰格式 * * @param name 表名 * @param suffix 后缀 * @return 转换后的字符串 */ public static String removeSuffixAndCamel(String name, Set suffix) { return underlineToCamel(removeSuffix(name, suffix)); } /** * 实体首字母大写 * * @param name 待转换的字符串 * @return 转换后的字符串 */ public static String capitalFirst(String name) { if (StringUtils.isNotBlank(name)) { return name.substring(0, 1).toUpperCase() + name.substring(1); } return StringPool.EMPTY; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy