import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.math.BigDecimal; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 项目中常用的工具类 * * @author tuozixuan * */ public class CommonUtil { /** * 是否为空,包括null和空格字符串 * * @param text 文本 * @return boolean 是否为空 */ public static boolean isEmpty(String text) { boolean result = false; if (text == null || "".equals(text.trim())) { result = true; } return result; } /** * 是否不为空,包括null和空格字符串 * * @param text 文本 * @return boolean 是否为空 */ public static boolean isNotEmpty(String text) { return !isEmpty(text); } /** * 如果文本为空或空字符串,则返回0,否则返回本身 * * @param text 文本 * @return String 处理后的文本 */ public static String emptyToZero(String text) { String localText = text; if (isEmpty(text)) { localText = "0"; } else { localText = text.trim(); } return localText; } /** * 对象是否为空 * * @param object 对象 * @return boolean 是否为空 */ public static boolean isEmpty(Object object) { boolean result = false; if (object != null && !"".equals(object.toString()) && !"null".equals(object.toString())) { result = true; } return result; } /** * 如果对象为空,则返回默认值,否则强制转换为int类型 * * @param obj 对象 * @param defaultInt 默认值 * @return int int类型的数字 */ public static int objectToInt(Object obj, int defaultInt) { return obj == null ? defaultInt : ((Integer) obj).intValue(); } /** * 如果对象为空,则返回默认值,否则强制转换为String类型 * * @param obj 对象 * @param defaultStr 默认值 * @return String String对象 */ public static String objectToString(Object obj, String defaultStr) { return obj == null ? defaultStr : String.valueOf(obj); } /** * 如果对象为空,则返回默认值,否则强制转换为Date类型 * * @param obj 对象 * @param defaultDate 默认值 * @return Date Date对象 */ public static Date objectToDate(Object obj, Date defaultDate) { return obj == null ? defaultDate : (Date) obj; } /** * 如果对象为空,则返回默认值,否则强制转换为double类型的数值 * * @param obj 对象 * @param defaultDouble 默认值 * @return double double数值 */ public static double objectToDouble(Object obj, double defaultDouble) { return obj == null ? defaultDouble : ((Double) obj).doubleValue(); } /** * 如果对象为空,则返回默认值,否则强制转换为long类型的数值 * * @param obj 对象 * @param defaultLong 默认值 * @return long long数值 */ public static long objectToLong(Object obj, long defaultLong) { return obj == null ? defaultLong : ((Long) obj).longValue(); } /** * 如果对象为空,则返回默认值,否则强制转换为boolean类型的数值 * * @param obj 对象 * @param defaultBoolean 默认值 * @return boolean boolean数值 */ public static boolean objectToBoolean(Object obj, boolean defaultBoolean) { return obj == null ? defaultBoolean : ((Boolean) obj).booleanValue(); } /** * 把字符串转换为日期对象,如果字符串为空或格式不符转换失败,则返回null<br/> * 1.如果字符串长度为8,则按照yyyyMMdd格式进行转换<br/> * 2.如果字符串长度为10,则按照yyyy-MM-dd格式进行转换<br/> * 3.如果字符串长度为14,则按照yyyyMMddHHmmss格式进行转换<br/> * 4.如果字符串长度为19,则按照yyyy-MM-dd HH:mm:ss格式进行转换<br/> * * @param dateStr 日期时间字符串 * @return Date 日期对象 */ public static Date stringToDate(String dateStr) { if (dateStr == null || "".equals(dateStr.trim())) { return null; } String formatStr = ""; if (dateStr.length() == 8) { formatStr = "yyyyMMdd"; } else if (dateStr.length() == 10) { formatStr = "yyyy-MM-dd"; } else if (dateStr.length() == 14) { formatStr = "yyyyMMddHHmmss"; } else if (dateStr.length() == 19) { formatStr = "yyyy-MM-dd HH:mm:ss"; } Date date = null; try { date = new SimpleDateFormat(formatStr).parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 获取指定格式的日期时间字符串 * * @param date 日期 * @param dateFormat 日期时间格式 * @return String 日期时间字符串 */ public static String getDateStr(Date date, String dateFormat) { SimpleDateFormat format = new SimpleDateFormat(dateFormat); String dateStr = format.format(date); return dateStr; } /** * 获取日期字符串,格式为yyyy-MM-dd * * @param date 日期对象 * @return String 日期字符串 */ public static String getDateStr(Date date) { return getDateStr(date, "yyyy-MM-dd"); } /** * 获取日期数字字符串,格式为yyyyMMdd * * @param date 日期对象 * @return String 日期数字字符串 */ public static String getDateNumStr(Date date) { return getDateStr(date, "yyyyMMdd"); } /** * 获取日期时间字符串,格式为yyyy-MM-dd HH:mm:ss * * @param date 日期对象 * @return String 日期字符串 */ public static String getDateTimeStr(Date date) { return getDateStr(date, "yyyy-MM-dd HH:mm:ss"); } /** * 获取日期时间数字字符串,格式为yyyyMMddHHmmss * * @param date 日期对象 * @return String 日期字符串 */ public static String getDateTimeNumStr(Date date) { return getDateStr(date, "yyyyMMddHHmmss"); } /** * 根据指定日期格式把日期字符串转换为日期对象 * * @param dateStr 日期字符串 * @param dateFormat 日期格式 * @return Date 日期对象 */ public static Date getDate(String dateStr, String dateFormat) { Date date = null; try { if (!isEmpty(dateStr)) { SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); date = sdf.parse(dateStr); } } catch (Exception e) { e.printStackTrace(); } return date; } /** * 获取当前时间 * * @return Date 当前时间 */ public static Date getCurrentDate() { Calendar cal = Calendar.getInstance(); Date currentDate = cal.getTime(); return currentDate; } /** * 获取当前日期的字符串yyyy-MM-dd * * @return String 当前日期的数字字符串 */ public static String getCurrentDateStr() { Date date = getCurrentDate(); return getDateStr(date, "yyyy-MM-dd"); } /** * 获取当前日期的数字字符串 * * @return String 当前日期的数字字符串 */ public static String getCurrentDateNumStr() { Date date = getCurrentDate(); return getDateStr(date, "yyyyMMdd"); } /** * 获取当前日期时间字符串,格式为yyyy-MM-dd HH:mm:ss * * @return String 日期时间字符串 */ public static String getCurrentDateTimeStr() { Date date = getCurrentDate(); return getDateStr(date, "yyyy-MM-dd HH:mm:ss"); } /** * 获取当前日期时间数字字符串,格式为yyyyMMddHHmmss * * @return String 日期时间字符串 */ public static String getCurrentDateTimeNumStr() { Date date = getCurrentDate(); return getDateStr(date, "yyyyMMddHHmmss"); } /** * 比较格式为yyyy-MM-dd HH:mm:ss的日期字符串的大小 * * @param dateTime1 日期时间字符串1 * @param dateTime2 日期时间字符串2 * @return int 0:相等 1:前者大约后者 -1:前者小于后者 -2:发生错误 */ public static int compareStringDate(String dateTime1, String dateTime2) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); try { c1.setTime(df.parse(dateTime1)); c2.setTime(df.parse(dateTime2)); } catch (ParseException e) { return -2; } int result = c1.compareTo(c2); if (result == 0) { return 0; } return result >= 0 ? 1 : -1; } /** * 是否为数字 * * @param text 要验证的文本 * @return boolean true-是 false-否 */ public static boolean isNumber(String text) { if (isEmpty(text)) { return false; } String numberStr = "0123456789"; for (int i = 0; i < text.length(); i++) { char c = text.charAt(i); if (numberStr.indexOf(String.valueOf(c)) == -1) { return false; } } return true; } /** * 是否符合电子邮件地址格式 * * @param email 电子邮件地址 * @return boolean true-是 false-否 */ public static boolean isEmail(String email) { boolean isEmail = false; Pattern p = Pattern.compile("([\\w[.-]]+)(@)([\\w[.-]]+\\.[\\w[.-]]+)"); Matcher m = p.matcher(email); if (m.matches()) { isEmail = true; } return isEmail; } /** * 是否符合手机号码格式 * * @param mobile 手机号码 * @return boolean true-是 false-否 */ public static boolean isMobile(String mobile) { boolean isMobile = false; Pattern p = Pattern.compile("((\\()?(\\+)?(86)?1[3|5|8][0-9]{9}(\\))?$)|((\\()?(\\+)?(86)?01[3|5|8][0-9]{9}(\\))?$)"); Matcher m = p.matcher(mobile); if (m.matches()) { isMobile = true; } return isMobile; } /** * 电话号码格式简单校验,格式为:数字-数字 * * @param phone 电话号码 * @return boolean true-是 false-否 */ public static boolean isPhone(String phone) { boolean isPhone = false; int index = phone.indexOf("-"); if (index > 0 && index != phone.length() - 1) { String phoneNum = phone.substring(0, index) + phone.substring(index + 1); if (isNumber(phoneNum)) { isPhone = true; } } return isPhone; } /** * 是否为密码,允许大小写字母、数字以及下划线,长度为4-16位 * * @param pwd 密码 * @return boolean true-是 false-否 */ public static boolean isPassword(String pwd) { boolean ifPwd = false; Pattern p = Pattern.compile("([A-Za-z0-9_]{4,16})"); Matcher m = p.matcher(pwd); if (m.matches()) { ifPwd = true; } return ifPwd; } /** * 文本是否都有字母组成 * * @param text 待验证的文本 * @return boolean true-是 false-否 */ public static boolean isLetter(String text) { if (text != null) { Pattern pattern = Pattern.compile("^[a-zA-Z]+$"); Matcher matcher = pattern.matcher(text); if (matcher.matches()) { return true; } } return false; } /** * 是否为文字,包括中文字符、英文字母和数字 * * @param text 待验证的文本 * @return boolean true-是 false-否 */ public static boolean isWord(String text) { boolean isWord = false; if (text != null) { Pattern p = Pattern.compile("([A-Za-z0-9\u4E00-\u9FA5])+"); Matcher m = p.matcher(text); if (m.matches()) { isWord = true; } } return isWord; } /** * 字符串是否处于指定长度之间 * * @param text 文本 * @param minLen 最小长度 * @param maxLen 最大长度 * @return boolean true-是 false-否 */ public static boolean isLength(String text, int minLen, int maxLen) { int length = 0; if (text != null) { length = trueLength(text); } boolean result = false; if (length >= minLen && length <= maxLen) { result = true; } return result; } /** * 获取文本的真实长度,中文-2 英文-1 * * @param text 文本 * @return int 文本的真实长度 */ public static int trueLength(String text) { int length = 0; Pattern p = Pattern.compile("([\u4E00-\u9FA5])"); for (int i = 0; i < text.length(); i++) { Matcher m = p.matcher(text.charAt(i) + ""); if (m.matches()) { length += 2; } else { length++; } } return length; } /** * 检查是否符合昵称规则,4-24个字符, 支持中英文、数字、下划线;<br/> * * @param nickName 昵称 * @return boolean true-符合 false-不符合 */ public static boolean isNickName(String nickName) { int length = trueLength(nickName); if (length < 4 || length > 24) { return false; } Pattern p = Pattern.compile("([_A-Za-z0-9\u4E00-\u9FA5]){1,24}"); Matcher m = p.matcher(nickName); if (!m.matches()) { return false; } return true; } /** * 是否URL地址 * * @param url URL * @return boolean true-是 false-否 */ public static boolean isUrl(String url) { return validByRegex("(http://|https://)?([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?", url); } /** * 是否为数字字符串 * * @param s 字符串 * @return boolean true-是 false-否 */ public static boolean isNumberic(String s) { if (isEmpty(s)) { return false; } boolean rtn = validByRegex("^[-+]{0,1}\\d*\\.{0,1}\\d+$", s); if (rtn) { return true; } return validByRegex("^0[x|X][\\da-eA-E]+$", s); } /** * 是否为整数字符串 * * @param s 字符串 * @return boolean true-是 false-否 */ public static boolean isInteger(String s) { boolean result = validByRegex("^[-+]{0,1}\\d*$", s); return result; } /** * 是否为邮政编码 * * @param s 字符串 * @return boolean true-是 false-否 */ public static boolean isZipCode(String s) { boolean result = validByRegex("^[0-9]{6}$", s); return result; } /** * 是否为QQ号码 * * @param s 字符串 * @return boolean true-是 false-否 */ public static boolean isQq(String s) { boolean result = validByRegex("^[1-9]\\d{4,9}$", s); return result; } /** * 是否为指定格式的日期字符串 * * @param strDate 日期字符串 * @param format 日期格式 * @return boolean true-是 false-否 */ public static boolean isDate(String strDate, String format) { boolean result = false; try { DateFormat df = new SimpleDateFormat(format); Date d = df.parse(strDate); String strNewDate = df.format(d); if (strDate.equals(strNewDate)) { result = true; } } catch (Exception localException) { } return result; } /** * 检验字符串是否匹配指定的正则表达式 * * @param regex 正则表达式 * @param input 字符串 * @return boolean true-匹配 false-不匹配 */ public static boolean validByRegex(String regex, String input) { Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher regexMatcher = p.matcher(input); return regexMatcher.find(); } /** * 数组拼装成 xx,yy,zz * * @param array 数组 * @param separator 分隔符 * @return String 字符串 */ public static <T> String join(T[] array, String separator) { StringBuffer str = new StringBuffer(); String newStr = ""; if (array != null && array.length > 0) { for (T arr : array) { str.append(arr).append(separator); } newStr = str.substring(0, str.length() - 1); } return newStr; } /** * 列表拼装成 xx,yy,zz类型的字符串 * * @param list 列表 * @param separator 分隔符 * @return String 字符串 */ public static <T> String join(List<T> list, String separator) { StringBuffer str = new StringBuffer(); String newStr = ""; if (list != null && list.size() > 0) { for (T arr : list) { str.append(arr).append(separator); } newStr = str.substring(0, str.length() - 1); } return newStr; } /** * 转换为大写 * * @param str 字符串 * @return String 大写字符串 */ public static String upperCase(String str) { if (str == null) { return null; } return str.toUpperCase(); } /** * 转换为小写 * * @param str 字符串 * @return String 小写字符串 */ public static String lowerCase(String str) { if (str == null) { return null; } return str.toLowerCase(); } /** * 字符串是否为null或者由空白字符组成 * * @param str 字符串 * @return boolean true-是 false-否 */ public static boolean isBlank(String str) { if ((str == null) || str.length() == 0) { return true; } int strLen = str.length(); for (int i = 0; i < strLen; i++) { if (!Character.isWhitespace(str.charAt(i))) { return false; } } return true; } /** * 字符串是否不为null并且不都由空白字符组成 * * @param str 字符串 * @return boolean true-是 false-否 */ public static boolean isNotBlank(String str) { return !isBlank(str); } /** * 提供精确的小数位四舍五入处理 * * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return double 四舍五入后的结果 */ public static double round(double v, int scale) { if (scale < 0) { throw new IllegalArgumentException("The scale must be a positive integer or zero"); } BigDecimal b = new BigDecimal(Double.toString(v)); BigDecimal one = new BigDecimal("1"); return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的加法运算 * * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * 提供精确的减法运算 * * @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */ public static double sub(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue(); } /** * 提供精确的乘法运算 * * @param v1 被乘数 * @param v2 乘数 * @return 两个参数的积 */ public static double mul(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.multiply(b2).doubleValue(); } /** * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指定的精度,以后的数字四舍五入 * * @param v1 被除数 * @param v2 除数 * @param scale 表示需要精确到小数点以后几位。 * @return 两个参数的商 */ public static double div(double v1, double v2, int scale) { if (scale < 0) { throw new IllegalArgumentException("The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 获取有★组成的字符串,如:★★★,如果starCount小于等于0,返回空字符串 * * @param starCount 星星的数量 * @return String starCount个星星组成的字符串 */ public static String getStarString(int starCount) { String starString = ""; if (starCount > 0) { for (int i = 0; i < starCount; i++) { starString += "★"; } } return starString; } /** * 根据类名获取Class类 * * @param className 全类名 * @return Class<?> Class类 * @throws ClassNotFoundException */ public static Class<?> getClass(String className) throws ClassNotFoundException { return Class.forName(className); } /** * 是否存在类名指定的类 * * @param className 类名 * @return boolean true-存在 false-不存在 */ public static boolean hasClass(String className) { boolean has = true; try { Class.forName(className); } catch (ClassNotFoundException e) { has = false; } return has; } /** * 获取类的构造器 * * @param c 类 * @param parameterTypes 参数类型 * @return Constructor<?> 构造器 * @throws SecurityException * @throws NoSuchMethodException */ public static Constructor<?> getConstructor(Class<?> c, Class<?>[] parameterTypes) throws SecurityException, NoSuchMethodException { return c.getConstructor(parameterTypes); } /** * 根据Class类获取类名 * * @param c Class类 * @return String 类名 */ public static String getClassName(Class<?> c) { String className = c.getSimpleName(); Class<?>[] interfaces = c.getInterfaces(); if ((!className.startsWith("$")) || (interfaces.length == 0)) { return className; } String[] names = new String[interfaces.length]; for (int i = 0; i < interfaces.length; i++) { names[i] = interfaces[i].getSimpleName(); } return className + "(" + join(names, ",") + ")"; } /** * SQL特殊字符转义 * * @param sql 结构化查询语句 * @return String 转义后的SQL */ public static String encodeSQL(String sql) { if (sql == null) { return ""; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < sql.length(); i++) { char c = sql.charAt(i); switch (c) { case '\\': sb.append("\\\\"); break; case '\r': sb.append("\\r"); break; case '\n': sb.append("\\n"); break; case '\t': sb.append("\\t"); break; case '\b': sb.append("\\b"); break; case '\'': sb.append("''"); break; case '"': sb.append("\\\""); break; case '%': sb.append("\\%"); break; default: sb.append(c); } } return sb.toString(); } /** * MD5散列不可逆加密算法 * * @param userName 用户名 * @param password 密码 * @return String 加密后的密码 */ public static String encryptPassword(String userName, String password) { String publicKey1 = "jjejduuhjdjdHDUEHWHd3ehgfidhwh23hHJCRIOI4HDHDHFKHFD3dhdhrg2djsHSDFHFEDJGW"; String publicKey2 = "347djejDETahe3j%3jd*%%2DDE223fdhahfh%^@21hdhfhzhdDFQ3hH7eh32hdE#@sdqhqhde"; String publicKey3 = "wkjd@wjsdj2324shjsQWeh2dsGed/#21ssdEdhawehrcyzhzeje2#@SDajw2D2sjzahd3#dSa"; String str = publicKey1 + userName + publicKey2 + password + publicKey3; return md5(str).toUpperCase(); } /** * 使用UTF-8解码字符串 * * @param paramValue 参数字符串 * @return String 解码后的字符串 * @throws Exception */ public static String decodeUTF8(String str) { return decode(str, "utf-8"); } /** * 用指定的编码类型对字符串进行解码 * * @param string 字符串 * @param encodeScheme 编码类型 * @return String 解码后的字符串 */ public static String decode(String string, String encodeScheme) { try { return java.net.URLDecoder.decode(string, encodeScheme); } catch (UnsupportedEncodingException uee) { uee.printStackTrace(); } return string; } /** * 使用UTF-8编码字符串 * * @param paramValue 参数字符串 * @return String 编码后的字符串 * @throws Exception */ public static String encodeUTF8(String str) { return encode(str, "utf-8"); } /** * 用指定的编码类型对字符串进行编码 * * @param string 字符串 * @param encodeScheme 编码类型 * @return String 编码后的字符串 */ public static String encode(String string, String encodeScheme) { try { return java.net.URLEncoder.encode(string, encodeScheme); } catch (UnsupportedEncodingException uee) { uee.printStackTrace(); } return string; } /** * 数组转换为列表 * * @param array 数组 * @return List<T> 列表 */ public static <T> List<T> arrayToList(T[] array) { List<T> list = null; if (array != null) { list = new ArrayList<T>(); for (int i = 0; i < array.length; i++) { list.add(array[i]); } } return list; } /** * 列表转换为数组 * * @param list 列表 * @param type Class类型 * @return T[] 数组 */ @SuppressWarnings("unchecked") public static <T> T[] listToArray(List<T> list, Class<T> type) { T[] array = null; if (list != null) { array = (T[]) Array.newInstance(type, list.size()); for (int i = 0; i < list.size(); i++) { array[i] = list.get(i); } } return array; } /** * 把字符串由一种编码转换为另一种编码(如果转换失败,则返回原字符串) * * @param str 字符串 * @param from 源编码 * @param to 目标编码 * @return String 编码后的字符串 */ public static String encodingString(String str, String from, String to) { String result = str; try { result = new String(str.getBytes(from), to); } catch (Exception e) { result = str; } return result; } /** * MD5加密字符串 * * @param str 加密前的字符串 * @return String 加密后的字符串 */ public static String md5(String str) { try { MessageDigest alg = MessageDigest.getInstance("MD5"); byte[] b = str.getBytes(); alg.reset(); alg.update(b); byte[] hash = alg.digest(); String d = ""; for (int i = 0; i < hash.length; i++) { int v = hash[i] & 0xFF; if (v < 16) { d += "0"; } d += Integer.toString(v, 16); } return d; } catch (NoSuchAlgorithmException e) { return null; } } /** * 关闭数据库连接 * * @param conn 数据库连接 */ public static void closeConnection(Connection conn) { try { if ((conn != null) && (!conn.isClosed())) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } /** * 关闭Statement对象 * * @param stmt Statement对象 */ public static void closeStatement(Statement stmt) { try { if (stmt != null) { stmt.close(); } } catch (SQLException e) { e.printStackTrace(); } } /** * 关闭结果集 * * @param rs ResultSet对象 */ public static void closeResultSet(ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } } /** * 安全关闭数据库连接、Statement及结果集对象 * * @param conn 数据库连接对象 * @param stmt Statement对象 * @param rs 结果集对象 */ public static void close(Connection conn, Statement stmt, ResultSet rs) { closeResultSet(rs); closeStatement(stmt); closeConnection(conn); } /** * 回滚数据库事务 * * @param conn 数据库连接 */ public static void rollback(Connection conn) { try { if ((conn != null) && (!conn.isClosed())) { conn.rollback(); } } catch (SQLException e) { e.printStackTrace(); } } /** * 是否为自动提交 * * @param conn 数据库连接 * @return boolean true-是 false-否 */ public static boolean isAutoCommit(Connection conn) { try { if ((conn != null) && (!conn.isClosed())) { return conn.getAutoCommit(); } } catch (SQLException e) { e.printStackTrace(); } return false; } /** * Connection对象不为null且未关闭的情况下,设置是否自动提交 * * @param conn 数据库连接 * @param autoCommit 是否自动提交 */ public static final void setAutoCommit(Connection conn, boolean autoCommit) { try { if ((conn != null) && (!conn.isClosed())) { conn.setAutoCommit(autoCommit); } } catch (SQLException e) { e.printStackTrace(); } } /** * 提交数据库事务 * * @param conn Connection对象 */ public static void commit(Connection conn) { try { if ((conn != null) && (!conn.isClosed())) { conn.commit(); } } catch (SQLException e) { e.printStackTrace(); } } }
相关推荐
在这个安装包中,除了上述工具和组件外,还包含了其他有用的开发工具和资源,例如Java开发文档、开发示例代码、开发工具插件等。这些资源可以帮助开发者更好地掌握Java开发技术,提高开发技能和效率。 这个安装包是...
以下是一些常见的Java项目开发工具类的详细说明: 1. **RestTemplate**: RestTemplate是Spring框架提供的一种用于执行HTTP请求的工具,特别适合于RESTful服务的调用。它支持GET、POST、PUT、DELETE等多种HTTP方法...
Java项目开发常用工具包,其中主要包括:Assert.java BufferedImageLuminanceSource.java CipherUtil.java ClientConst.java CodeUtil.java ComputeUtil.java DataUtils.java DateUtils.java Digests.java Encodes....
在给定的“Java常用开发工具.zip”压缩包中,我们可以找到几个关键的组件,这些工具对于Java开发者来说至关重要。 1. **Tomcat 8.5**: Tomcat是一个开源的、基于Apache Software Foundation的Jakarta项目下的...
综上所述,“JAVA项目开发案例全程实录(超级高清).PDF”不仅涵盖了一般Java项目的开发流程和技术栈介绍,还提供了实际案例分析和问题解决方法等内容,对于想要深入了解Java项目开发的读者来说,是一份非常有价值的...
本文将详细解析“java开发常用工具类大全”中涉及的关键知识点,包括但不限于输入字符校验、数据转换、网络操作、加密解密、JSON处理、图像操作以及数据库操作。 1. **输入字符校验类**: 这类工具通常包含对字符...
在学习这些知识点的过程中,PPT可能会提供详细的代码示例、案例分析以及问题解决策略,帮助学习者逐步提高Java项目开发的能力。此外,PPT中的每一页都可能包含小结和习题,以巩固学习效果。通过这样的学习计划,学习...
在Java编程中,工具类(Utility Classes)是非常重要的组成部分,它们提供了许多通用的功能,以简化开发人员的工作。以下是对"一些java常用的工具类"的详细说明。 首先,工具类通常包含静态方法,这些方法不依赖于...
"java常用开发工具类大全"很可能包含以上提到的一些工具类的实现或扩展,便于开发者在项目中快速集成和使用。通过阅读`readme.htm`和解压后的`1845027886334976.zip`文件,你可以获取更多具体的信息和示例,以便更好...
在软件开发过程中,Java项目开发文档模板是至关重要的,它为整个项目的生命周期提供了一套标准和规范,确保团队成员能够高效、有序地进行工作。以下将详细解释标题和描述中涉及的知识点,并根据标签和文件名拓展相关...
"Java常用开发词汇" ...10. Java开发词汇的实际应用:Java开发词汇广泛应用于实际的软件开发项目中,例如开发一个android应用程序等。 本文档旨在帮助开发者更好地理解和掌握Java开发词汇,提高开发效率和质量。
【标题】"JAVA项目开发全程实录配套光盘"揭示了这个压缩包是与一本关于JAVA项目开发的书籍配套的资源。通常这类资源会包含实际项目开发中的源代码、示例、教程或练习材料,旨在帮助读者更好地理解和实践书中讲解的...
在Java开发中,工具类是程序员经常会用到的代码模块,它们封装了各种常见的操作,提高了代码的可重用性和可维护性。以下是对标题和描述中提到的几个常用工具类的详细说明: 1. **DateUtils**: `java.util.Date` 和 ...
Java项目打包工具是开发人员在完成Java应用程序或Web应用程序开发后,用来整合资源、编译代码、处理依赖、生成可部署文件的重要工具。这些工具帮助开发者将源代码、配置文件、库和其他资源组织成便于分发和运行的...
在Java编程语言中,工具类库(通常称为util包)是开发者日常工作中不可或缺的一部分。这些工具类提供了许多实用的功能,可以极大地...在实际开发中,根据项目需求选择合适的工具类,可以有效提升代码质量和开发效率。
2. Java Workshop:这是一个早期的Java开发工具,具体信息在描述中未详尽给出,但通常这样的工具会提供项目管理、代码编辑、编译和调试等功能,便于开发者进行Java应用程序的构建。 3. NetBeans:NetBeans是一款...
《Java项目开发实战密码》是一本深度探讨Java项目开发实践的书籍,主要针对那些希望提升自己在实际开发中解决问题能力的程序员。GBK编码的使用表明该资源可能关注的是早期Java项目,那时GBK是中国地区广泛使用的字符...
下面,我们将深入探讨Java项目开发的关键知识点: 1. **Java简介**:Java是一种多平台、面向对象的编程语言,由Sun Microsystems(现已被Oracle收购)于1995年推出。它的设计目标是“一次编写,到处运行”,这得益...
下面将详细阐述一些重要的Java工具类及其常用方法。 1. **Apache Commons Lang**: Apache Commons Lang 是一个非常实用的工具库,提供了大量Java语言没有内置的功能。例如,`StringUtils` 类包含了大量的字符串操作...
Java项目中的开发工具类是程序员在日常开发过程中经常会用到的辅助库,它们极大地提高了代码的可读性和开发效率。以下是一些从标题和描述中提及的Java开发工具类及其详细说明: 1. **Lombok** (lombok-1.16.6.jar):...