org.apache.commons
commons-lang3
3.4
commons-beanutils
commons-beanutils
1.9.3
joda-time
joda-time
2.9.4
(1)fastjson
com.fasterxml.jackson.core
jackson-databind
2.9.8
(2)XML解析库——easyexcel
com.alibaba
easyexcel
1.1.2-beta5
(3)PDF解析库——iText
com.itextpdf
itextpdf
5.5.13
(1)全局常量类AppConstants
public class AppConstants {
/** 符号标记*/
public static final String SYMBOL_QUOTE = "\"";
public static final String SYMBOL_SLASHSLASH = "//";
public static final String SYMBOL_BACKSLASH = "\\";
public static final String SYMBOL_SLASH = "/";
public static final String SYMBOL_SHARP = "#";
public static final String SYMBOL_COMMA = ",";
public static final String SYMBOL_EQUALS = "=";
public static final String SYMBOL_SPACE = " ";
public static final String SYMBOL_AT = "@";
public static final String SYMBOL_TAB = "\t";
public static final String SYMBOL_YEN = "¥";
public static final String SYMBOL_QUESTION_MARK = "?";
public static final String SYMBOL_PERCENT_SIGN = "%";
public static final String SYMBOL_AND = "&";
public static final String SYMBOL_OR = "|";
public static final String SYMBOL_HYPHEN = "-";
public static final String SYMBOL_UNDERSCORE = "_";
public static final String SYMBOL_HTML_TAG_BR = "
";
public static final String SYMBOL_NEWLINE = "\n";
public static final String YES = "Y";
public static final String NO = "N";
/** 项目类型 [text] */
public static final String HTML_INPUT_TEXT = "text";
/** 项目类型 [textarea] */
public static final String HTML_INPUT_TEXTAERA = "textarea";
/** 项目类型[checkbox] */
public static final String HTML_INPUT_CHECKBOX = "checkbox";
/** 项目类型[radio] */
public static final String HTML_INPUT_RADIO = "radio";
/** 项目类型[select] */
public static final String HTML_INPUT_SELECT = "select";
/** 项目类型[webeditor] */
public static final String HTML_INPUT_WEBEDITOR = "webeditor";
/** 项目类型[文件] */
public static final String HTML_INPUT_FILE = "file";
}
(2)BigDecimal计算工具类
/**
* All rights Reserved, Designed By technologyMall
* @Title: BigDecimalArithmeticUtils
* @Package com.tm.technologyMall
* @Description BigDecimal的数学运算工具类
* @author sun.h
* @date 2019年5月18日
* @version V1.0
*/
public class BigDecimalArithmeticUtils {
/**
* BigDecimal的加法运算
* @param b1
* @param bn
* @return
*/
public static BigDecimal add(BigDecimal b1, BigDecimal... bn) {
if (null == b1) {
b1 = BigDecimal.ZERO;
}
if (null != bn) {
for (BigDecimal b : bn) {
b1 = b1.add(null == b ? BigDecimal.ZERO : b);
}
}
return b1;
}
/**
* 计算金额方法
* @param b1
* @param bn
* @return
*/
public static BigDecimal subtract(BigDecimal b1, BigDecimal... bn) {
return subtract(true, b1, bn);
}
/**
* BigDecimal的减法运算
* @param isZero 减法结果为负数时是否返回0:true时返回0,false是返回负数结果
* @param b1 被减数
* @param bn 需要减的减数数组
* @return
*/
public static BigDecimal subtract(Boolean isZero, BigDecimal b1, BigDecimal... bn) {
if (null == b1) {
b1 = BigDecimal.ZERO;
}
BigDecimal r = b1;
if (null != bn) {
for (BigDecimal b : bn) {
r = r.subtract((null == b ? BigDecimal.ZERO : b));
}
}
return isZero ? (r.compareTo(BigDecimal.ZERO) == -1 ? BigDecimal.ZERO : r) : r;
}
/**
* BigDecimal的除法运算,返回2位小数,默认值为BigDecimal.ZERO
* @param b1
* @param b2
* @return
*/
public static BigDecimal safeDivide(T b1, T b2){
return safeDivide(b1, b2, BigDecimal.ZERO,2);
}
/**
* BigDecimal的除法运算封装,如果除数或者被除数为0,返回默认值
* @param b1
* @param b2
* @param defaultValue
* @return
*/
public static BigDecimal safeDivide(T b1, T b2, BigDecimal defaultValue,int digit) {
if (null == b1 || null == b2) {
return defaultValue;
}
try {
return BigDecimal.valueOf(b1.doubleValue()).divide(BigDecimal.valueOf(b2.doubleValue()), digit, BigDecimal.ROUND_HALF_UP);
} catch (Exception e) {
return defaultValue;
}
}
/**
* BigDecimal的乘法运算封装 默认位置2
* @param b1
* @param b2
* @return
*/
public static BigDecimal safeMultiply(T b1, T b2) {
return multiply(b1,b2,2);
}
/**
* BigDecimal的乘法运算封装
* @param b1
* @param b2
* @return
*/
public static BigDecimal multiply(T b1, T b2,int digit) {
if (null == b1 || null == b2) {
return BigDecimal.ZERO;
}
return BigDecimal.valueOf(b1.doubleValue()).multiply(BigDecimal.valueOf(b2.doubleValue())).setScale(digit, BigDecimal.ROUND_HALF_UP);
}
}
(3)正则表达式工具类
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* All rights Reserved, Designed By technologyMall
* @Title: RegexUtils
* @Package com.tm.technologyMall
* @Description 常用正则表达式工具类
* @author sun.h
* @date 2019年5月18日
* @version V1.0
*/
public class RegexUtils {
/**
* 正则:手机号(简单)
*/
public static final String REGEX_MOBILE_SIMPLE = "^[1]\\d{10}$";
/**
* 正则:手机号(精确)
* 移动:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188
* 联通:130、131、132、145、155、156、175、176、185、186
* 电信:133、153、173、177、180、181、189
* 全球星:1349
* 虚拟运营商:170
*/
public static final String REGEX_MOBILE_EXACT = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|(147))\\d{8}$";
/**
* 匹配固定电话
* 格式为: 0XXX-XXXXXX(10-13位首位必须为0) 或0XXX XXXXXXX(10-13位首位必须为0) 或
* (0XXX)XXXXXXXX(11-14位首位必须为0) 或 XXXXXXXX(6-8位首位不为0) 或
* XXXXXXXXXXX(11位首位不为0)
* 匹配 : 0371-123456 或 (0371)1234567 或 (0371)12345678 或 010-123456 或
* 010-12345678 或 12345678912
* 不匹配: 1111-134355 或 0123456789
*
*/
public static final String REGEX_FIX_TEL = "^(?:0[0-9]{2,3}[-//s]{1}|//(0[0-9]{2,4}//))[0-9]{6,8}$|^[1-9]{1}[0-9]{5,7}$|^[1-9]{1}[0-9]{10}$";
/**
* 正则:身份证号码15位
*/
public static final String REGEX_ID_CARD15 = "^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$";
/**
* 正则:身份证号码18位
*/
public static final String REGEX_ID_CARD18 = "^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9Xx])$";
/**
* 匹配email地址
* 格式: [email protected]
* 匹配 : [email protected] 或 [email protected]
* 不匹配: foo@bar 或 [email protected]
*/
public static final String REGEX_EMAIL = "(?://w[-._//w]*//w@//w[-._//w]*//w//.//w{2,3}$)";
/**
* 正则:汉字
*/
public static final String REGEX_ZH = "^[\\u4e00-\\u9fa5]+$";
/**
* 正则:用户名,取值范围为a-z,A-Z,0-9,"_",汉字,不能以"_"结尾,用户名必须是6-20位
*/
public static final String REGEX_USERNAME = "^[\\w\\u4e00-\\u9fa5]{6,20}(?{@code false}: 不匹配
*/
public static boolean isMobileSimple(CharSequence input) {
return isMatch(REGEX_MOBILE_SIMPLE, input);
}
/**
* 验证手机号(精确)
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isMobileExact(CharSequence input) {
return isMatch(REGEX_MOBILE_EXACT, input);
}
/**
* 验证固定电话号码
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isTel(CharSequence input) {
return isMatch(REGEX_FIX_TEL, input);
}
/**
* 验证身份证号码15位
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isIDCard15(CharSequence input) {
return isMatch(REGEX_ID_CARD15, input);
}
/**
* 验证身份证号码18位
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isIDCard18(CharSequence input) {
return isMatch(REGEX_ID_CARD18, input);
}
/**
* 验证邮箱
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isEmail(CharSequence input) {
return isMatch(REGEX_EMAIL, input);
}
/**
* 验证汉字
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isZh(CharSequence input) {
return isMatch(REGEX_ZH, input);
}
/**
* 验证用户名
* 取值范围为a-z,A-Z,0-9,"_",汉字,不能以"_"结尾,用户名必须是6-20位
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isUsername(CharSequence input) {
return isMatch(REGEX_USERNAME, input);
}
/**
* 验证yyyy-MM-dd格式的日期校验,已考虑平闰年
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isDate(CharSequence input) {
return isMatch(REGEX_DATE, input);
}
/**
* 验证IP地址
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isIP(CharSequence input) {
return isMatch(REGEX_IP, input);
}
/**
* 验证URL
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isURL(CharSequence input) {
return isMatch(REGEX_URL, input);
}
/**
* http
*
* @param input 待验证文本
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isHTTP(CharSequence input) {
return isMatch(REGEXP_HTTP, input);
}
/**
* 判断是否匹配正则
*
* @param regex 正则表达式
* @param input 要匹配的字符串
* @return {@code true}: 匹配
{@code false}: 不匹配
*/
public static boolean isMatch(String regex, CharSequence input) {
return input != null && input.length() > 0 && Pattern.matches(regex, input);
}
/**
* 获取正则匹配的部分
*
* @param regex 正则表达式
* @param input 要匹配的字符串
* @return 正则匹配的部分
*/
public static List getMatches(String regex, CharSequence input) {
if (input == null) {
return null;
}
List matches = new ArrayList<>();
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
matches.add(matcher.group());
}
return matches;
}
/**
* 获取正则匹配分组
*
* @param input 要分组的字符串
* @param regex 正则表达式
* @return 正则匹配分组
*/
public static String[] getSplits(String input, String regex) {
if (input == null) {
return null;
}
return input.split(regex);
}
/**
* 替换正则匹配的第一部分
*
* @param input 要替换的字符串
* @param regex 正则表达式
* @param replacement 代替者
* @return 替换正则匹配的第一部分
*/
public static String getReplaceFirst(String input, String regex, String replacement) {
if (input == null) {
return null;
}
return Pattern.compile(regex).matcher(input).replaceFirst(replacement);
}
/**
* 替换所有正则匹配的部分
*
* @param input 要替换的字符串
* @param regex 正则表达式
* @param replacement 代替者
* @return 替换所有正则匹配的部分
*/
public static String getReplaceAll(String input, String regex, String replacement) {
if (input == null) {
return null;
}
return Pattern.compile(regex).matcher(input).replaceAll(replacement);
}
}
(4)日期工具类
/**
* All rights Reserved, Designed By technologyMall
* @Title: DateTimeUtils
* @Package com.tm.technologyMall
* @Description 日期获取格式化工具类
* @author sun.h
* @date 2019年5月20日
* @version V1.0
*/
public class DateTimeUtils {
public static final String DATE_TIME_FORMAT_SLASH_yyyyMMdd_HHmmss = "yyyy/MM/dd HH:mm:ss";
public static final String DATE_TIME_FORMAT_SLASH_yyyyMMdd_HHmm = "yyyy/MM/dd HH:mm";
public static final String DATE_TIME_FORMAT_SLASH_yyyyMMdd_HH = "yyyy/MM/dd HH";
public static final String DATE_TIME_FORMAT_SLASH_yyyyMMdd = "yyyy/MM/dd";
public static final String DATE_TIME_FORMAT_SLASH_yyyyMM = "yyyy/MM";
public static final String DATE_TIME_FORMAT_LINE_yyyyMMdd_HHmmss = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_TIME_FORMAT_LINE_yyyyMMdd_HHmm = "yyyy-MM-dd HH:mm";
public static final String DATE_TIME_FORMAT_LINE_yyyyMMdd_HH = "yyyy-MM-dd HH";
public static final String DATE_TIME_FORMAT_LINE_yyyyMMdd = "yyyy-MM-dd";
public static final String DATE_TIME_FORMAT_LINE_yyyyMM= "yyyy-MM";
public static final String DATE_TIME_FORMAT_yyyyMMddHHmmss = "yyyyMMddHHmmss";
public static final String DATE_TIME_FORMAT_yyyyMMdd = "yyyyMMdd";
public static final String DATE_TIME_FORMAT_yyyyMM = "yyyyMM";
public static final String DATE_TIME_FORMAT_yyyy = "yyyy";
public static final String DATE_TIME_FORMAT_MM = "MM";
public static final String DATE_TIME_FORMAT_dd = "dd";
public static final String DATE_TIME_FORMAT_HHmmss = "HH:mm:ss";
public static final String DATE_TIME_FORMAT_HHmm = "HH:mm";
public static final String DATE_TIME_FORMAT_HH = "HH";
public static final String DATE_TIME_FORMAT_mm = "mm";
public static final String DATE_TIME_FORMAT_yyyyM = "yyyy年M月";
/**
* 取得当前时间.
* 详细说明: 取得当前时间,返回 Timestamp 类型。
* @return
*/
public static Timestamp getCurrentTimestamp() {
return new Timestamp(System.currentTimeMillis());
}
/**
* 取得当前的Epoch time(in milliseconds).
* @return
*/
public static long getCurrentEpochTimeMillis() {
return System.currentTimeMillis();
}
/**
* 根据EpochTime取得Timestamp.
*
详细说明: 取得当前时间,返回 Timestamp 类型。
* @return
*/
public static Timestamp getTimestampByEpochTime(long time) {
return new Timestamp(time);
}
/**
* 按照指定格式解析字符串成Date
* @param dateTimeStr 需要格式化的字符串
* @param formatStr 格式化的格式
* @return
*/
public static Date strToDate(String dateTimeStr,String formatStr){
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(formatStr);
DateTime dateTime = dateTimeFormatter.parseDateTime(dateTimeStr);
return dateTime.toDate();
}
/**
* Date格式化成字符串。
* @param timestamp 需要格式化的时间
* @param formatStr 格式化的格式
* @return
*/
public static String formatDateToString(Date timestamp, String formatStr) {
if(timestamp == null){
return StringUtils.EMPTY;
}
DateTime dateTime = new DateTime(timestamp);
return dateTime.toString(formatStr);
}
/**
* 日期格式化处理(yyyy/MM/dd HH:mm:ss).
* @return
*/
public static String dateTimeFormat_SLASH_yyyyMMdd_HHmmss_COLON(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_SLASH_yyyyMMdd_HHmmss);
}
/**
* 日期格式化处理(yyyy-MM-dd HH:mm:ss).
* @return
*/
public static String dateTimeFormat_HYPHEN_yyyyMMdd_HHmmss_COLON(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_LINE_yyyyMMdd_HHmmss);
}
/**
* 日期格式化处理(yyyy/MM/dd HH:mm).
* @return
*/
public static String dateTimeFormat_SLASH_yyyyMMdd_HHmmCOLON(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_SLASH_yyyyMMdd_HHmm);
}
/**
* 日期格式化处理(yyyy-MM-dd HH:mm).
* @return
*/
public static String dateTimeFormat_yyyyMMdd_HYPHEN_HHmmCOLON(Date timestamp) {
return formatDateToString(timestamp,DATE_TIME_FORMAT_LINE_yyyyMMdd_HHmm);
}
/**
* 日期格式化处理(yyyyMMddHHmmss).
* @return
*/
public static String dateTimeFormat_yyyyMMddHHmmss(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_yyyyMMddHHmmss);
}
/**
* 日期格式化处理(yyyy/MM/dd).
* @return
*/
public static String dateTimeFormat_SLASH_yyyyMMdd(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_SLASH_yyyyMMdd);
}
/**
* 日期格式化处理(yyyy-MM-dd).
* @return
*/
public static String dateTimeFormat_HYPHEN_yyyyMMdd(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_LINE_yyyyMMdd);
}
/**
* 日期格式化处理(yyyyMMdd).
* @return
*/
public static String dateTimeFormat_yyyyMMdd(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_yyyyMMdd);
}
/**
* 日期格式化处理(yyyy/MM).
* @return
*/
public static String dateTimeFormat_yyyyMM_SLASH(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_SLASH_yyyyMM);
}
/**
* 日期格式化处理(yyyy-MM).
* @return
*/
public static String dateTimeFormat_HYPHEN_yyyyMM(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_LINE_yyyyMM);
}
/**
* 日期格式化处理(yyyyMM).
* @return
*/
public static String dateTimeFormat_yyyyMM(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_yyyyMM);
}
/**
* 日期格式化处理(HH:mm:ss).
* @return
*/
public static String dateTimeFormat_HHmmss_COLON(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_HHmmss);
}
/**
* 日期格式化处理(yyyy年M月).
* @return
*/
public static String dateTimeFormat_yyyyM(Date timestamp) {
return formatDateToString(timestamp, DATE_TIME_FORMAT_yyyyM);
}
}
(5)项目通用工具类
/**
* All rights Reserved, Designed By technologyMall
* @Title: CommonLogic
* @Package com.tm.technologyMall
* @Description 项目通用业务处理
* @author sun.h
* @date 2019年5月20日
* @version V1.0
*/
public class CommonLogic {
/**
* 从JSON格式的字符串里以Key取得VALUE.
* @param jsonString
* @param key
* @return
*/
public static String getJsonValue(String jsonString, String key) {
if (StringUtils.isNotEmpty(jsonString)) {
try{
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonString);
if (node.get(key) != null) {
return node.get(key).toString();
}
}catch(Exception e){
return StringUtils.EMPTY;
}
}
return StringUtils.EMPTY;
}
/**
* 如果Obj为空,返回空字符串;非空时,Obj转成字符串返回.
* @param obj
*/
public static String defaultString(Object obj) {
String result = StringUtils.EMPTY;
if (obj != null) {
result = StringUtils.trim(StringUtils.defaultString(String.valueOf(obj)));
}
return result;
}
}
1.下载安装并启动nexus
(2)配置私服库 3rd_part
(3)打包可执行的jar文件
(4)将打包好的jar上传到私服
mvn deploy:deploy-file -DgroupId=com.tmall -DartifactId=commons -Dversion=1.0.0 -Dpackaging=jar -Dfile=E:\IdeaProjects2\technologyMall\out\artifacts\common_jar\common.jar -Durl=http://192.168.6.130:8081/repository/3rd_part/ -DrepositoryId=thirdparty
(5)下载私服上的jar
com.tmall
commons
1.0.0
(6)测试下载情况
public class TestCommon {
public static void main(String[] args) {
String input = AppConstants.HTML_INPUT_FILE;
DetabaseUtils.convertDomainFieldToColumnName("a");
}
}