- 前言
- 1.驼峰转换
- 2.获取数据库表列表
- 3.本地数据库hutool的db工具类
- 4.主流数据库枚举工具
- 5.去掉所有的t n
- 6.根据“.”通配多级目录数据结构
- 7.动态新增和删除的定时调度方案
- 8.判断是否是有效cron表达式
最近在做数据源相关的系统,持续更新系统中所用的相关技术问题。
1.驼峰转换原地址:https://blog.csdn.net/kanglong129/article/details/98218871
com.google.guava guava 21.0
import org.junit.Test;
import com.google.common.base.CaseFormat;
public class GuavaTester {
@Test
public void test() {
System.out.println(CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, "test-data"));//testData
System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "test_data"));//testData
System.out.println(CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "test_data"));//TestData
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "testdata"));//testdata
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "TestData"));//test_data
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, "testData"));//test-data
}
}
2.获取数据库表列表
需求:查询该数据源的表列表及描述
首先通过hutools的数据源工具类,获取到Db对象
Connection connection = db.getConnection();
DatabasemetaData metaData = connection.getmetadata();
ResultSet rs = metaData.getTables(null,null,null,new String[]{"TABLE"})
List
3.本地数据库hutool的db工具类
import cn.hutool.db.Db;
import com.alibaba.druid.pool.DruidDataSource;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class LocalDataSourceUtils {
@Value("${spring.datasource.url}")
public String url;
@Value("${spring.datasource.username}")
public String username;
@Value("${spring.datasource.password}")
public String password;
@Value("${spring.datasource.driver-class-name}")
public String driverClassName;
private static Db db;
public Db getDb() throws Exception{
if(null == db || db.getConnection().isClosed()){
DruidDataSource ds = new DruidDataSource();
ds.setUsername(username);
ds.setPassword(password);
ds.setDriverClassName(driverClassName);
ds.setUrl(url);
Db tmDb = Db.use(ds,driverClassName);
db = tmDb;
}
return db;
}
}
4.主流数据库枚举工具
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public enum DataSourceDbType {
MYSQL("mysql","com.mysql.jdbc.Driver","Mysql_5~6","jdbc:mysql://IP:端口/数据库名?useUnicode=true&characterEncoding=utf-8"),
MYSQL_8("mysql-new","com.mysql.cj.jdbc.Driver","Mysql_8+","jdbc:mysql://IP:端口/数据库名?useUnicode=true&characterEncoding=utf-8"),
ORACLE("oracle","oracle.jdbc.driver.OracleDriver","Oracle","jdbc:oracle:thin:@IP:端口:实例名"),
ORACLE_NEW("oracle-new","oracle.jdbc.OracleDriver","Oracle_new","jdbc:oracle:thin:@IP:端口:实例名"),
POSTGRE("postgre","org.postgresql.Driver","Postgre","jdbc:postgresql://IP:端口/数据库名"),
SQLITE3("sqlite3","org.sqlite.JDBC","Sqlite","jdbc:sqlite:/文件地址/数据库名.db"),
H2("h2","org.h2.Driver","H2","尚未支持!"),
SQL_SERVER("sqlserver","com.microsoft.jdbc.sqlserver.SQLServerDriver","SqlServer 2000(目前仅支持测试)","jdbc:sqlserver://IP:端口;DatabaseName=数据库名"),
SQL_SERVER_2("sqlserver2","com.microsoft.sqlserver.jdbc.SQLServerDriver","SqlServer 2005+","jdbc:sqlserver://IP:端口;DatabaseName=数据库名");
public String KEY;
public String DRIVER;
public String LABEL;
public String URL;
DataSourceDbType(String KEY,String DRIVER,String LABEL,String URL){
this.KEY = KEY;
this.DRIVER = DRIVER;
this.LABEL = LABEL;
this.URL = URL;
}
public static DataSourceDbType get(String key) {
DataSourceDbType[] values = DataSourceDbType.values();
for (DataSourceDbType object : values) {
if (object.KEY.equals(key)) {
return object;
}
}
return null;
}
public static List
5.去掉所有的t n
String s = "你的数据";
s = s.replace("\n","");
s = s.replace("\r","");
s = s.replace("\","");
6.根据“.”通配多级目录数据结构
===========================================
outKey = name
mappingPath = data.user.name
item = new HashMap();
map = {
data:{
user:{
name:"张三"
}
}
}
==========================================
private void getMappingValue(String outKey,String mappingPath,Map item,Map map){
String[] path = mappingPath.split("\.");
Object next = map;
for(String key : path){
next = map.get(key);
}
item.put(outKey,next);
}
==========================================
return
item = {name:"张三"}
7.动态新增和删除的定时调度方案
采用hutool工具包
官方网址:
https://www.hutool.cn/docs/#/cron/%E5%85%A8%E5%B1%80%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1-CronUtil
本人测试代码片段
测试结果
原文章:https://blog.csdn.net/lovelovelovelovelo/article/details/73210458
public static boolean isValidexpression(final String cronexpression){
CronTriggerImpl trigger = new CronTriggerImpl();
try {
trigger.setCronexpression(cronexpression);
Date date = trigger.computeFirstFireTime(null);
return date != null && date.after(new Date());
} catch (Exception e) {
LOGGER.error("[TaskUtils.isValidexpression]:failed. throw ex:" , e);
}
return false;
}
持续更新,最后一次更新时间:2021年10月22日10:02:55



