java中StringUtils,FileUtils,PropertiesUtils,DataBaseUtils工具类简介说明
下文笔者讲述java中各工具类的简介说明,如下所示
字符串工具类
2.文件工具类
jdbc工具类
- **StringUtils**:用于字符串操作,简化字符串处理。 - **FileUtils**:用于文件操作,简化文件读取、写入、复制等。 - **PropertiesUtils**:用于属性文件操作,简化属性文件的加载、读取、写入。 - **DataBaseUtils**:用于数据库操作,简化数据库连接、查询、更新等
字符串工具类
StringUtils
package com.java265.generate.utils; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtils { public static String removeCrlf(String str) { if(str == null) return null; return StringUtils.join(StringUtils.tokenizeToStringArray(str,"\t\n\r\f")," "); } private static final Map<String,String> XML = new HashMap<String,String>(); static{ XML.put("apos", "'"); XML.put("quot", "\""); XML.put("amp", "&"); XML.put("lt", "<"); XML.put("gt", ">"); } public static String unescapeXml(String str) { if(str == null) return null; for(String key : XML.keySet()) { String value = XML.get(key); str = StringUtils.replace(str, "&"+key+";", value); } return str; } public static String removePrefix(String str,String prefix) { return removePrefix(str,prefix,false); } //去除前缀temp = StringUtils.removePrefix(temp,"tb_",true); 把数据库表名bs_user 转换成java类名 public static String removePrefix(String str,String prefix,boolean ignoreCase) { if(str == null) return null; if(prefix == null) return str; if(ignoreCase) { if(str.toLowerCase().startsWith(prefix.toLowerCase())) { return str.substring(prefix.length()); } }else { if(str.startsWith(prefix)) { return str.substring(prefix.length()); } } return str; } public static boolean isBlank(String str) { return str == null || str.trim().length() == 0; } public static boolean isNotBlank(String str) { return !isBlank(str); } public static String getExtension(String str) { if(str == null) return null; int i = str.lastIndexOf('.'); if(i >= 0) { return str.substring(i+1); } return null; } /** * Count the occurrences of the substring in string s. * @param str string to search in. Return 0 if this is null. * @param sub string to search for. Return 0 if this is null. */ public static int countOccurrencesOf(String str, String sub) { if (str == null || sub == null || str.length() == 0 || sub.length() == 0) { return 0; } int count = 0; int pos = 0; int idx; while ((idx = str.indexOf(sub, pos)) != -1) { ++count; pos = idx + sub.length(); } return count; } //判断是否包含 if(StringUtils.contains(columnName ,keys.split(","))) public static boolean contains(String str,String... keywords) { if(str == null) return false; if(keywords == null) throw new IllegalArgumentException("'keywords' must be not null"); for(String keyword : keywords) { if(str.equals(keyword)) { return true; } } return false; } public static String defaultString(Object value) { if(value == null) { return ""; } return value.toString(); } public static String defaultIfEmpty(Object value,String defaultValue) { if(value == null || "".equals(value)) { return defaultValue; } return value.toString(); } //首字母大写 public static String makeAllWordFirstLetterUpperCase(String sqlName) { String[] strs = sqlName.toLowerCase().split("_"); String result = ""; String preStr = ""; for(int i = 0; i < strs.length; i++) { if(preStr.length() == 1) { result += strs[i]; }else { result += capitalize(strs[i]); } preStr = strs[i]; } return result; } public static int indexOfByRegex(String input,String regex) { Pattern p = Pattern.compile(regex); Matcher m = p.matcher(input); if(m.find()) { return m.start(); } return -1; } // 把数据库列名create_time转换成java类属性名 -> createTime public static String toJavaVariableName(String str) { return uncapitalize(toJavaClassName(str)); } public static String toJavaClassName(String str) { return makeAllWordFirstLetterUpperCase(StringUtils.toUnderscoreName(str)); } public static String removeMany(String inString, String... keywords) { if (inString == null) { return null; } for(String k : keywords) { inString = replace(inString, k, ""); } return inString; } public static String replace(String inString, String oldPattern, String newPattern) { if (inString == null) { return null; } if (oldPattern == null || newPattern == null) { return inString; } StringBuffer sbuf = new StringBuffer(); // output StringBuffer we'll build up int pos = 0; // our position in the old string int index = inString.indexOf(oldPattern); // the index of an occurrence we've found, or -1 int patLen = oldPattern.length(); while (index >= 0) { sbuf.append(inString.substring(pos, index)); sbuf.append(newPattern); pos = index + patLen; index = inString.indexOf(oldPattern, pos); } sbuf.append(inString.substring(pos)); // remember to append any characters to the right of a match return sbuf.toString(); } /**����ĸ��copy from spring*/ public static String capitalize(String str) { return changeFirstCharacterCase(str, true); } /**����ĸСдcopy from spring*/ public static String uncapitalize(String str) { return changeFirstCharacterCase(str, false); } /**copy from spring*/ private static String changeFirstCharacterCase(String str, boolean capitalize) { if (str == null || str.length() == 0) { return str; } StringBuffer buf = new StringBuffer(str.length()); if (capitalize) { buf.append(Character.toUpperCase(str.charAt(0))); } else { buf.append(Character.toLowerCase(str.charAt(0))); } buf.append(str.substring(1)); return buf.toString(); } private static final Random RANDOM = new Random(); public static String randomNumeric(int count) { return random(count, false, true); } public static String random(int count, boolean letters, boolean numbers) { return random(count, 0, 0, letters, numbers); } public static String random(int count, int start, int end, boolean letters, boolean numbers) { return random(count, start, end, letters, numbers, null, RANDOM); } public static String random(int count, int start, int end, boolean letters, boolean numbers, char[] chars, Random random) { if (count == 0) { return ""; } else if (count < 0) { throw new IllegalArgumentException( "Requested random string length " + count + " is less than 0."); } if ((start == 0) && (end == 0)) { end = 'z' + 1; start = ' '; if (!letters && !numbers) { start = 0; end = Integer.MAX_VALUE; } } char[] buffer = new char[count]; int gap = end - start; while (count-- != 0) { char ch; if (chars == null) { ch = (char) (random.nextInt(gap) + start); } else { ch = chars[random.nextInt(gap) + start]; } if ((letters && Character.isLetter(ch)) || (numbers && Character.isDigit(ch)) || (!letters && !numbers)) { if (ch >= 56320 && ch <= 57343) { if (count == 0) { count++; } else { // low surrogate, insert high surrogate after putting it // in buffer[count] = ch; count--; buffer[count] = (char) (55296 + random.nextInt(128)); } } else if (ch >= 55296 && ch <= 56191) { if (count == 0) { count++; } else { // high surrogate, insert low surrogate before putting // it in buffer[count] = (char) (56320 + random.nextInt(128)); count--; buffer[count] = ch; } } else if (ch >= 56192 && ch <= 56319) { // private high surrogate, no effing clue, so skip it count++; } else { buffer[count] = ch; } } else { count++; } } return new String(buffer); } /** */ public static String toUnderscoreName(String name) { if(name == null) return null; String filteredName = name; if(filteredName.indexOf("_") >= 0 && filteredName.equals(filteredName.toUpperCase())) { filteredName = filteredName.toLowerCase(); } if(filteredName.indexOf("_") == -1 && filteredName.equals(filteredName.toUpperCase())) { filteredName = filteredName.toLowerCase(); } StringBuffer result = new StringBuffer(); if (filteredName != null && filteredName.length() > 0) { result.append(filteredName.substring(0, 1).toLowerCase()); for (int i = 1; i < filteredName.length(); i++) { String preChart = filteredName.substring(i - 1, i); String c = filteredName.substring(i, i + 1); if(c.equals("_")) { result.append("_"); continue; } if(preChart.equals("_")){ result.append(c.toLowerCase()); continue; } if(c.matches("\\d")) { result.append(c); }else if (c.equals(c.toUpperCase())) { result.append("_"); result.append(c.toLowerCase()); } else { result.append(c); } } } return result.toString(); } public static String removeEndWiths(String inputString,String... endWiths) { for(String endWith : endWiths) { if(inputString.endsWith(endWith)) { return inputString.substring(0,inputString.length() - endWith.length()); } } return inputString; } /** * 将string转换为list<ColumnEnum> 格式为: "enumAlias(enumKey,enumDesc)" */ static Pattern three = Pattern.compile("(.*)\\((.*),(.*)\\)"); static Pattern two = Pattern.compile("(.*)\\((.*)\\)"); /** * Test whether the given string matches the given substring * at the given index. * @param str the original string (or StringBuilder) * @param index the index in the original string to start matching against * @param substring the substring to match at the given index */ public static boolean substringMatch(CharSequence str, int index, CharSequence substring) { for (int j = 0; j < substring.length(); j++) { int i = index + j; if (i >= str.length() || str.charAt(i) != substring.charAt(j)) { return false; } } return true; } public static String[] tokenizeToStringArray(String str,String seperators) { if(str == null) return new String[0]; StringTokenizer tokenlizer = new StringTokenizer(str,seperators); List result = new ArrayList(); while(tokenlizer.hasMoreElements()) { Object s = tokenlizer.nextElement(); result.add(s); } return (String[])result.toArray(new String[result.size()]); } public static String join(List list, String seperator) { return join(list.toArray(new Object[0]),seperator); } public static String replace(int start, int end, String str,String replacement) { String before = str.substring(0,start); String after = str.substring(end); return before + replacement + after; } public static String join(Object[] array, String seperator) { if(array == null) return null; StringBuffer result = new StringBuffer(); for(int i = 0; i < array.length; i++) { result.append(array[i]); if(i != array.length - 1) { result.append(seperator); } } return result.toString(); } public static int containsCount(String string, String keyword) { if(string == null) return 0; int count = 0; for(int i = 0; i < string.length(); i++ ) { int indexOf = string.indexOf(keyword,i); if(indexOf < 0) { break; } count ++; i = indexOf; } return count; } }
2.文件工具类
FileUtils
package com.java265.generate.utils; import java.io.*; import java.net.URL; import java.util.*; //文件处理工具类 public class FileUtils { // 得到相对路径 public static String getRelativePath(File baseDir,File file) { if(baseDir.equals(file)) return ""; if(baseDir.getParentFile() == null) return file.getAbsolutePath().substring(baseDir.getAbsolutePath().length()); return file.getAbsolutePath().substring(baseDir.getAbsolutePath().length()+1); } //查询某个目录下的所有文件 public static List<File> searchAllFile(File dir) throws IOException { ArrayList arrayList = new ArrayList(); searchFiles(dir,arrayList); return arrayList; } //递归获取某个目录下的所有文件 public static void searchFiles(File dir,List<File> collector) throws IOException { if(dir.isDirectory()) { File[] subFiles = dir.listFiles(); for(int i = 0; i < subFiles.length; i++) { searchFiles(subFiles[i],collector); } }else{ collector.add(dir); } } //创建文件 public static File mkdir(String dir,String file) { if(dir == null) throw new IllegalArgumentException("dir must be not null"); File result = new File(dir,file); if(result.getParentFile() != null) { result.getParentFile().mkdirs(); } return result; } }
3.PropertiesUtils
package com.java265.generate.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.*; /** * 需要将自定义的配置信息写入到properties文件中 * 配置到相对于工程的properties文件夹下 */ public class PropertiesUtils { //自定义的数据模型map集合 public static Map<String,String> customMap = new HashMap<>(); static { File dir = new File("properties"); try { //查询某个目录下的所有文件 List<File> files = FileUtils.searchAllFile(new File(dir.getAbsolutePath())); for (File file : files) { if(file.getName().endsWith(".properties")) { Properties prop = new Properties(); prop.load(new FileInputStream(file)); customMap.putAll((Map) prop); } } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { PropertiesUtils.customMap.forEach((k, v)->{ System.out.println(k+"--"+v); }); } }
jdbc工具类
DataBaseUtils
package com.java265.generate.utils; import com.java265.generate.entity.Column; import com.java265.generate.entity.DataBase; import com.java265.generate.entity.Table; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Properties; public class DataBaseUtils { //获取到mysql中所有的数据库名称 //获取数据库连接 public static Connection getConnection(DataBase db) throws Exception { Properties props = new Properties(); props.put("remarksReporting","true");//获取数据库的备注信息 props.put("user",db.getUserName()); props.put("password",db.getPassWord()); Class.forName(db.getDriver());//注册驱动 return DriverManager.getConnection(db.getUrl(),props); } //获取数据库列表 public static List<String> getSchemas(DataBase db) throws Exception { //1.获取元数据 Connection connection = getConnection(db); DatabaseMetaData metaData = connection.getMetaData(); //2.获取所有数据库列表 ResultSet rs = metaData.getCatalogs(); List<String> list = new ArrayList<>(); while (rs.next()) { list.add(rs.getString(1)); } rs.close(); connection.close(); return list; } /** * 获取数据库中的表和字段构造实体类 * Table对象 * * 1.参数 * DataBase 数据库对象 * 2.操作步骤 * 1.获取连接 * 2.获取databasemetaData * 3.获取当前数据库中的所有表 * 4.获取每个表中的所有字段 * 5.封装到java对象中即可 */ public static List<Table> getDbInfo(DataBase db) throws Exception { //1.获取连接 Connection connection = getConnection(db); //2.获取元数据 DatabaseMetaData metaData = connection.getMetaData(); //3.获取当前数据库中的所有表 ResultSet tables = metaData.getTables(null, null, "pe_permission", new String[]{"TABLE"}); List<Table> list = new ArrayList<>(); while (tables.next()) { Table tab = new Table(); //i.表名 String tableName = tables.getString("TABLE_NAME"); //bs_user User //ii.类名 String className = removePrefix(tableName); //iii.描述 String remarks = tables.getString("REMARKS"); //iiii.主键 ResultSet primaryKeys = metaData.getPrimaryKeys(null, null, tableName); String keys = ""; while (primaryKeys.next()) { String keyname = primaryKeys.getString("COLUMN_NAME"); keys += keyname+","; } tab.setName(tableName); tab.setName2(className); tab.setComment(remarks); tab.setKey(keys); //处理表中的所有字段 ResultSet columns = metaData.getColumns(null, null, tableName, null); List <Column> columnList = new ArrayList<>(); while (columns.next()) { Column cn = new Column(); //构造Column对象 //列名称 String columnName = columns.getString("COLUMN_NAME"); //user_id userId , create_time createTime cn.setColumnName(columnName); //属性名 String attName = StringUtils.toJavaVariableName(columnName); cn.setColumnName2(attName); //java类型和数据库类型 String dbType = columns.getString("TYPE_NAME");//VARCHAR,DATETIME cn.setColumnDbType(dbType); String javaType = PropertiesUtils.customMap.get(dbType); cn.setColumnType(javaType); //备注 String columnRemark = columns.getString("REMARKS");//VARCHAR,DATETIME cn.setColumnComment(columnRemark); //是否主键 String pri = null; if(StringUtils.contains(columnName ,keys.split(","))) { pri = "PRI"; } cn.setColumnKey(pri); columnList.add(cn); } columns.close(); tab.setColumns(columnList); list.add(tab); } tables.close(); connection.close(); return list; } public static String removePrefix(String tableName) { String prefix = PropertiesUtils.customMap.get("tableRemovePrefixes"); //bs_, tb_ , co_ , String temp = tableName; //bs_user for(String pf : prefix.split(",")) { temp = StringUtils.removePrefix(temp,pf,true); } //temp = user return StringUtils.makeAllWordFirstLetterUpperCase(temp); } public static void main(String[] args) throws Exception { DataBase db = new DataBase("MYSQL","ihrm"); db.setUserName("root"); db.setPassWord("111111"); List<Table> dbInfo = DataBaseUtils.getDbInfo(db); for (Table table : dbInfo) { List<Column> columns = table.getColumns(); for (Column column : columns) { System.out.println(column); } } } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。