目录
0. 相关文章链接
1. 开发目的
2. 导入依赖
3. 代码
4. Hikari连接池各配置说明
0. 相关文章链接
开发随笔文章汇总
1. 开发目的
在使用SpringBoot后端开发中,我们如果需要对数据库(比如MySQL)进行增删查改,可以很方便的使用Mybatis进行操作。但是在大数据中,如果想要对数据库进行操作,就没有那么方便,虽然大数据组件中有各种连接源和写入源,比如Spark读取MySQL数据库,flink写入MySQL数据库等。但是也有很多需要操作其他数据库,或者在中途读取维度数据的情况,比如Flink将数据写入到Doris中,这样就不方便操作了,此时一个较为方便的工具类能方便很多使用。
2. 导入依赖
如下依赖是以华为GaussDBForDWS为案例
com.huaweicloud.dws
huaweicloud-dws-jdbc
log4j
log4j
provided
org.slf4j
slf4j-api
provided
org.slf4j
slf4j-log4j12
provided
com.alibaba
fastjson
commons-beanutils
commons-beanutils
provided
com.google.guava
guava
provided
org.springframework.boot
spring-boot-starter-jdbc
${springboot.version}
com.zaxxer
HikariCP
2.6.1
对应的版本号:
8 8 2.11 2.11.8 1.10 1.10.0 1.4.01.2.17 1.7.21 8.0.21 1.2.75 8.1.0 1.9.4 29.0-jre 3.6.0 2.0.2.RELEASE UTF-8 1.10.0
3. 代码
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.CaseFormat;
import com.google.common.collect.Lists;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.*;
public class GaussDBUtil {
public static Logger logger = LoggerFactory.getLogger(GaussDBUtil.class);
private static JdbcTemplate jdbcTemplate;
public static JdbcTemplate getJdbcTemplate() {
if (jdbcTemplate == null) {
synchronized (GaussDBUtil.class) {
if (jdbcTemplate == null) {
try {
Properties props = new Properties();
props.put("batchMode", "OFF");
HikariDataSource ds = new HikariDataSource();
ds.setDriverClassName("org.postgresql.Driver");
ds.setJdbcUrl(ModelUtil.getConfigValue("gaussdb.realtime.dw.url"));
ds.setUsername(ModelUtil.getConfigValue("gaussdb.realtime.dw.username"));
ds.setPassword(ModelUtil.getConfigValue("gaussdb.realtime.dw.password"));
ds.setMaximumPoolSize(2);
ds.setMinimumIdle(1);
ds.setDataSourceProperties(props);
jdbcTemplate = new JdbcTemplate(ds);
logger.info("使用HikariPool连接池初始化JdbcTemplate成功,其中最大连接大小为:{} , 最小连接大小为:{} ;", ds.getMaximumPoolSize(), ds.getMinimumIdle());
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("创建GaussDB数据库的jdbcTemplate失败,抛出的异常信息为:" + e.getMessage());
}
}
}
}
return jdbcTemplate;
}
public static String disposeSpecialCharacter(Object object) {
String result = null;
if (object instanceof String) {
result = object.toString();
} else {
result = JSON.parseObject(JSON.toJSONString(object)).toString();
}
return result.replace("'", "''");
}
public static List queryList(String sql, Class clz, boolean underScoreToCamel) {
try {
List
4. Hikari连接池各配置说明
# Hikari will use the above plus the following to setup connection pooling
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
#最小空闲连接,默认值10,小于0或大于maximum-pool-size,都会重置为maximum-pool-size
spring.datasource.hikari.minimum-idle=5
#最大连接数,小于等于0会被重置为默认值10;大于零小于1会被重置为minimum-idle的值
spring.datasource.hikari.maximum-pool-size=15
#自动提交从池中返回的连接,默认值为true
spring.datasource.hikari.auto-commit=true
#空闲连接超时时间,默认值600000(10分钟),大于等于max-lifetime且max-lifetime>0,会被重置为0;不等于0且小于10秒,会被重置为10秒。
#只有空闲连接数大于最大连接数且空闲时间超过该值,才会被释放
spring.datasource.hikari.idle-timeout=30000
#连接池名称,默认HikariPool-1
spring.datasource.hikari.pool-name=Hikari
#连接最大存活时间.不等于0且小于30秒,会被重置为默认值30分钟.设置应该比mysql设置的超时时间短;单位ms
spring.datasource.hikari.max-lifetime=55000
#连接超时时间:毫秒,小于250毫秒,会被重置为默认值30秒
spring.datasource.hikari.connection-timeout=30000
#连接测试查询
spring.datasource.hikari.connection-test-query=SELECT 1
# Hikari will use the above plus the following to setup connection pooling spring.datasource.type=com.zaxxer.hikari.HikariDataSource #最小空闲连接,默认值10,小于0或大于maximum-pool-size,都会重置为maximum-pool-size spring.datasource.hikari.minimum-idle=5 #最大连接数,小于等于0会被重置为默认值10;大于零小于1会被重置为minimum-idle的值 spring.datasource.hikari.maximum-pool-size=15 #自动提交从池中返回的连接,默认值为true spring.datasource.hikari.auto-commit=true #空闲连接超时时间,默认值600000(10分钟),大于等于max-lifetime且max-lifetime>0,会被重置为0;不等于0且小于10秒,会被重置为10秒。 #只有空闲连接数大于最大连接数且空闲时间超过该值,才会被释放 spring.datasource.hikari.idle-timeout=30000 #连接池名称,默认HikariPool-1 spring.datasource.hikari.pool-name=Hikari #连接最大存活时间.不等于0且小于30秒,会被重置为默认值30分钟.设置应该比mysql设置的超时时间短;单位ms spring.datasource.hikari.max-lifetime=55000 #连接超时时间:毫秒,小于250毫秒,会被重置为默认值30秒 spring.datasource.hikari.connection-timeout=30000 #连接测试查询 spring.datasource.hikari.connection-test-query=SELECT 1
注:其他相关文章链接由此进 -> 开发随笔文章汇总



