五、基础模块工具类完善

一、常用工具类

1.apache工具类

  
            org.apache.commons
            commons-lang3
            3.4
        

       
            commons-beanutils
            commons-beanutils
            1.9.3
        

2.日期时间工具类


 joda-time 
joda-time
 2.9.4 

3.常用解析库

(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

 

4.自定义全局工具类

(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;
	}
	
}

 

二、构建Maven私库

1.下载安装并启动nexus

五、基础模块工具类完善_第1张图片

 

(2)配置私服库 3rd_part

五、基础模块工具类完善_第2张图片

五、基础模块工具类完善_第3张图片

五、基础模块工具类完善_第4张图片

(3)打包可执行的jar文件

五、基础模块工具类完善_第5张图片

五、基础模块工具类完善_第6张图片

五、基础模块工具类完善_第7张图片

 

(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");
   }
}

 

你可能感兴趣的:(项目实战,java,mysql)