栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA开发数据源系统经验汇总

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA开发数据源系统经验汇总

文章目录
    • 前言
    • 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> list = new ArrayList<>();
while(rs.next()){
	Map map = new HashMap<>();
	map.put("tableName",rs.getString("TABLE_NAME"));
	map.put("tableDesc",rs.getString("REMARKS"));
	list.add(map);
}
// 省略关闭conn和rs代码
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> getSimpleList(){
        List> resultList = new ArrayList<>();
        DataSourceDbType[] values = DataSourceDbType.values();
        for (DataSourceDbType object : values) {
            Map item = new HashMap<>();
            item.put("label",object.LABEL);
            item.put("value",object.KEY);
            item.put("driver", object.DRIVER);
            item.put("url",object.URL);
            resultList.add(item);
        }
        return resultList;
    }
}

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

本人测试代码片段


测试结果

8.判断是否是有效cron表达式

原文章: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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/345409.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号