springboot之druid连接postgersql11代码实践

x33g5p2x  于2021-12-24 转载在 其他  
字(6.3k)|赞(0)|评价(0)|浏览(500)

1.pom文件依赖

  1. <!--数据库连接jdbc依赖-->
  2. <dependency>
  3. <groupId>org.springframework</groupId>
  4. <artifactId>spring-jdbc</artifactId>
  5. <version>4.1.0.RELEASE</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-jdbc</artifactId>
  10. </dependency>
  11. <!--mysql链接依赖-->
  12. <dependency>
  13. <groupId>mysql</groupId>
  14. <artifactId>mysql-connector-java</artifactId>
  15. </dependency>
  16. <!--阿里druid数据库链接依赖-->
  17. <dependency>
  18. <groupId>com.alibaba</groupId>
  19. <artifactId>druid-spring-boot-starter</artifactId>
  20. <version>1.1.9</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.postgresql</groupId>
  24. <artifactId>postgresql</artifactId>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter-data-jpa</artifactId>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.apache.commons</groupId>
  32. <artifactId>commons-dbcp2</artifactId>
  33. <version>2.0.1</version>
  34. </dependency>
  35. <dependency>
  36. <groupId>com.alibaba</groupId>
  37. <artifactId>fastjson</artifactId>
  38. <version>1.1.15</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>commons-codec</groupId>
  42. <artifactId>commons-codec</artifactId>
  43. <version>1.10</version>
  44. </dependency>

2.application.yml文件配置

  1. # postgresql 环境配置
  2. server:
  3. port: 18005
  4. max-http-header-size: 8192
  5. logging:
  6. level:
  7. root: info
  8. spring:
  9. datasource:
  10. # url: jdbc:postgresql://10.101.15.59:5432/postgres?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&useSSL=false
  11. url: jdbc:postgresql://10.101.15.59:5432/postgres
  12. username: root
  13. password: 123abc
  14. # driver-class-name: com.mysql.jdbc.Driver
  15. # driver-class-name: org.postgresql.Driver
  16. driverClassName: org.postgresql.Driver
  17. # driverClass: org.postgresql.Driver
  18. platform: postgres
  19. type: com.alibaba.druid.pool.DruidDataSource
  20. # type: org.apache.commons.dbcp2.BasicDataSource
  21. initialization-mode: always
  22. # ============================== druid ============================== #
  23. druid:
  24. #最大活跃数
  25. maxActive: 20
  26. #初始化数量
  27. initialSize: 1
  28. #最大连接等待超时时间
  29. maxWait: 60000
  30. #打开PSCache,并且指定每个连接PSCache的大小
  31. poolPreparedStatements: true
  32. maxPoolPreparedStatementPerConnectionSize: 20
  33. #通过connectionProperties属性来打开mergeSql功能;慢SQL记录
  34. #connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
  35. minIdle: 1
  36. timeBetweenEvictionRunsMillis: 60000
  37. minEvictableIdleTimeMillis: 300000
  38. validationQuery: select 1 from dual
  39. testWhileIdle: true
  40. testOnBorrow: false
  41. testOnReturn: false
  42. #配置监控统计拦截的filters,去掉后监控界面sql将无法统计,'wall'用于防火墙
  43. filters: stat, wall, log4j
  44. jpa:
  45. show_sql: true
  46. database-platform: org.hibernate.dialect.PostgreSQL9Dialect
  47. # database-platform: cn.luutqf.springboot.dialect.JsonbPostgresDialect
  48. hibernate:
  49. ddl-auto: update
  50. properties:
  51. hibernate:
  52. dialect: org.hibernate.dialect.PostgreSQLDialect
  53. hbm2ddl.auto: update
  54. jdbc.lob.non_contextual_creation: true
  55. format_sql: true
  56. temp:
  57. # 兼容SpringBoot2.X, 关闭 Hibernate尝试验证PostgreSQL的CLOB特性
  58. use_jdbc_metadata_defaults: false

3.Config代码配置

  1. package org.fiend.config;
  2. import com.alibaba.druid.support.http.StatViewServlet;
  3. import com.alibaba.druid.support.http.WebStatFilter;
  4. import org.fiend.common.jdbc.JdbcDao;
  5. import org.fiend.common.jdbc.impl.JdbcDaoImpl;
  6. import org.springframework.beans.factory.annotation.Qualifier;
  7. import org.springframework.beans.factory.annotation.Value;
  8. import org.springframework.boot.context.properties.ConfigurationProperties;
  9. import org.springframework.boot.jdbc.DataSourceBuilder;
  10. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  11. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import org.springframework.jdbc.core.JdbcTemplate;
  15. import javax.sql.DataSource;
  16. /**
  17. * postgresql data source config
  18. * @author fiend 2018/12/5
  19. */
  20. @Configuration
  21. public class PgsDataSourceConfig {
  22. @Bean(name = "jdbcDao")
  23. @Qualifier("jdbcDao")
  24. public JdbcDao jdbcDao(@Qualifier("jdbcTemplate") JdbcTemplate jdbcTemplate) {
  25. return new JdbcDaoImpl(jdbcTemplate);
  26. }
  27. @Bean(name = "jdbcTemplate")
  28. @Qualifier("jdbcTemplate")
  29. public JdbcTemplate jdbcTemplate(@Qualifier("dataSource") DataSource dataSource) {
  30. return new JdbcTemplate(dataSource);
  31. }
  32. @Bean(name = "dataSource")
  33. @Qualifier("dataSource")
  34. @ConfigurationProperties(prefix="spring.datasource")
  35. public DataSource DataSource() {
  36. return DataSourceBuilder.create().type(dataSourceType).build();
  37. }
  38. @Value("${spring.datasource.type}")
  39. private Class<? extends DataSource> dataSourceType;
  40. /**
  41. * 配置监控服务器
  42. * @return 返回监控注册的servlet对象
  43. */
  44. @Bean
  45. @SuppressWarnings("unchecked")
  46. public ServletRegistrationBean statViewServlet() {
  47. ServletRegistrationBean servletRegistrationBean =
  48. new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
  49. // 添加IP白名单
  50. servletRegistrationBean.addInitParameter("allow", "192.168.25.125,127.0.0.1");
  51. // 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
  52. servletRegistrationBean.addInitParameter("deny", "192.168.25.123");
  53. // 添加控制台管理用户
  54. servletRegistrationBean.addInitParameter("loginUsername", "druid");
  55. servletRegistrationBean.addInitParameter("loginPassword", "123456");
  56. // 是否能够重置数据
  57. servletRegistrationBean.addInitParameter("resetEnable", "false");
  58. return servletRegistrationBean;
  59. }
  60. /**
  61. * 配置服务过滤器
  62. * @return 返回过滤器配置对象
  63. */
  64. @Bean
  65. @SuppressWarnings("unchecked")
  66. public FilterRegistrationBean statFilter() {
  67. FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
  68. // 添加过滤规则
  69. filterRegistrationBean.addUrlPatterns("/*");
  70. // 忽略过滤格式
  71. filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*,");
  72. return filterRegistrationBean;
  73. }
  74. }

4.读取数据库代码

  1. /**
  2. * @author fiend
  3. */
  4. @Service
  5. public class HomeService extends AbstractService {
  6. Logger log = LoggerFactory.getLogger(getClass());
  7. public JSONObject getUserInfo() {
  8. String sql = "select * from public.user";
  9. JSONObject json = new JSONObject();
  10. List<User> userList = jdbcDao.queryForList(sql, new Object[]{}, User.class);
  11. json.put("userInfoList", userList);
  12. return json;
  13. }
  14. }

相关文章