SpringBoot项目配置postgresql数据库(配置多数据源)

pg库也是常用的数据库之一,有些刚开始接触开发的老师可能不熟,这里简单介绍一下,总体使用方法和mysql类似,所以这里只讲配置方法

pom文件导入依赖

        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
        </dependency>        
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.18</version>
        </dependency>

yml文件配置(多数据源):

spring:
  datasource:
    bd3:
      jdbc-url: jdbc:postgresql://XXX.XXX.XX.XXX:5432/test1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
      username: XXX
      password: XXX
      driver-class-name: org.postgresql.Driver
      type: com.zaxxer.hikari.HikariDataSource
      hikari:
        minimum-idle: 3
        auto-commit: true
        idle-timeout: 10000
        pool-name: DatebookHikariCP
        max-lifetime: 1800000
        connection-timeout: 30000
    timed:
      jdbc-url: jdbc:postgresql://XXX.XXX.XX.XXX:5432/test2?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
      username: XXX
      password: XXX
      driver-class-name: org.postgresql.Driver
      type: com.zaxxer.hikari.HikariDataSource
      hikari:
        minimum-idle: 3
        auto-commit: true
        idle-timeout: 10000
        pool-name: DatebookHikariCP
        max-lifetime: 1800000
        connection-timeout: 30000

这个地方test1是数据库1,test2是数据库2,yml文件一定要主要好格式,建议用properties

下面是有关于多数据源的配置

文件夹格式,这里直接放贴图

不同数据源的dao层要放到对应文件夹下

下面是数据源的配置文件

MyBaitsSqlSessionFactory配置文件
package com.XXX.XXX.datasource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

public class MyBaitsSqlSessionFactory {
    private MyBaitsSqlSessionFactory() {

    }

    private static final MyBaitsSqlSessionFactory onlyOne = new MyBaitsSqlSessionFactory();

    public static MyBaitsSqlSessionFactory getInstance() {
        return onlyOne;
    }

    public SqlSessionFactory sessionFactory(DataSource dataSource, String mapper_location, String type_aliases_package, boolean mapUnderscoreToCamelCase) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);

        bean.setVfs(SpringBootVFS.class);
        //mybatis扫描xml所在位置
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapper_location));
        //实体类位置
        bean.setTypeAliasesPackage(type_aliases_package);
        //mybatis配置
        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
        configuration.setMapUnderscoreToCamelCase(mapUnderscoreToCamelCase);
        bean.setConfiguration(configuration);

        return bean.getObject();
    }

}

 

Bd3Config配置文件
package com.XXX.XXX.datasource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@SpringBootConfiguration
@MapperScan(basePackages = "com.XXX.XXX.dao.bd3", sqlSessionFactoryRef = "bd3SessionFactory", sqlSessionTemplateRef = "bd3SqlSessionTemplate")
public class Bd3Config {

    //@Value("${mybatis.mapper-locations}")
    private String mapper_location = "classpath*:/mapper/bd3/**/*.xml";

    @Value("${mybatis.type-aliases-package}")

    private String type_aliases_package;

    @Value("${mybatis.configuration.map-underscore-to-camel-case}")
    private boolean mapUnderscoreToCamelCase;

    /**
     * 初始化连接池
     *
     * @return DataSource
     */
    @Bean(name = "bd3")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.bd3")
    public DataSource bd3DataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     * 构建 SqlSessionFactory
     *
     * @return SqlSessionFactory
     */
    @Bean(name = "bd3SessionFactory")
    @Primary
    public SqlSessionFactory bd3SessionFactory() throws Exception {
        MyBaitsSqlSessionFactory myBatisFactory = MyBaitsSqlSessionFactory.getInstance();
        return myBatisFactory.sessionFactory(bd3DataSource(), mapper_location, type_aliases_package, mapUnderscoreToCamelCase);
    }

    /*
     * 配置事物
     *
     * @return DataSourceTransactionManager
     */
    @Bean("bd3TransactionManager")
    @Primary
    public DataSourceTransactionManager TransactionManager() {
        return new DataSourceTransactionManager(bd3DataSource());
    }

    /**
     * 构建 SqlSessionTemplate
     *
     * @return SqlSessionTemplate
     */
    @Bean(name = "bd3SqlSessionTemplate")
    @Primary
    public SqlSessionTemplate sqlSessionTemplate() throws Exception {
        return new SqlSessionTemplate(bd3SessionFactory());
    }
}
TimedConfig配置文件
package com.XXX.XXX.datasource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@SpringBootConfiguration
@MapperScan(basePackages = "com.XX.XXX.dao.timed", sqlSessionFactoryRef = "timedSessionFactory", sqlSessionTemplateRef = "timedSqlSessionTemplate")
public class TimedConfig {

    //@Value("${mybatis.mapper-locations}")
    private String mapper_location = "classpath*:/mapper/timed/**/*.xml";

    @Value("${mybatis.type-aliases-package}")

    private String type_aliases_package;

    @Value("${mybatis.configuration.map-underscore-to-camel-case}")
    private boolean mapUnderscoreToCamelCase;

    /**
     * 初始化连接池
     *
     * @return DataSource
     */
    @Bean(name = "timed")
    @ConfigurationProperties(prefix = "spring.datasource.timed")
    public DataSource timedDataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     * 构建 SqlSessionFactory
     *
     * @return SqlSessionFactory
     */
    @Bean(name = "timedSessionFactory")
    public SqlSessionFactory timedSessionFactory() throws Exception {
        MyBaitsSqlSessionFactory myBatisFactory = MyBaitsSqlSessionFactory.getInstance();
        return myBatisFactory.sessionFactory(timedDataSource(), mapper_location, type_aliases_package, mapUnderscoreToCamelCase);
    }

    /*
     * 配置事物
     *
     * @return DataSourceTransactionManager
     */
    @Bean("timedTransactionManager")
    public DataSourceTransactionManager TransactionManager() {
        return new DataSourceTransactionManager(timedDataSource());
    }

    /**
     * 构建 SqlSessionTemplate
     *
     * @return SqlSessionTemplate
     */
    @Bean(name = "timedSqlSessionTemplate")
    public SqlSessionTemplate sqlSessionTemplate() throws Exception {
        return new SqlSessionTemplate(timedSessionFactory());
    }
}

然后就可以正常使用了,希望大家技术越来越好!

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 1. 添加依赖 在 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.5</version> </dependency> ``` 2. 配置数据源 在 application.properties 文件中添加以下配置: ``` spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.url=jdbc:postgresql://localhost:5432/dbname spring.datasource.username=username spring.datasource.password=password ``` 其中,dbname 为数据库名称,username 和 password 分别为数据库的用户名和密码。 3. 配置 JPA 如果使用 JPA 来操作数据库,还需要在 application.properties 文件中添加以下配置: ``` spring.jpa.database=POSTGRESQL spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect ``` 其中,spring.jpa.hibernate.ddl-auto=update 表示在启动应用程序时自动更新数据库结构。 4. 测试连接 在代码中使用 @Autowired 注解注入 DataSource 对象,并调用 getConnection() 方法测试连接是否成功。 ``` @Autowired private DataSource dataSource; public void testConnection() { try { Connection connection = dataSource.getConnection(); System.out.println("连接成功"); } catch (SQLException e) { System.out.println("连接失败"); e.printStackTrace(); } } ``` 以上就是使用 Spring Boot 配置 PostgreSQL 数据库的步骤。 ### 回答2: Spring Boot 是一个开源的 Java 开发框架,它简化了基于 Spring 框架的应用程序的配置和部署。下面是使用 Spring Boot 配置 PostgreSQL 数据库的步骤: 步骤1:添加 PostgreSQL 依赖 首先,在 Spring Boot 项目的 pom.xml 文件中添加 PostgreSQL 依赖。可以使用以下代码添加依赖: <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>版本号</version> </dependency> 请将 "版本号" 替换为您想要使用的 PostgreSQL 版本号。 步骤2:配置数据库连接 在项目配置文件(例如 application.properties 或 application.yml)中,添加以下属性来配置数据库连接: spring.datasource.url=jdbc:postgresql://localhost:5432/your_database_name spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=org.postgresql.Driver 请将 "your_database_name"、 "your_username" 和 "your_password" 替换为您的 PostgreSQL 数据库的名称、用户名和密码。 步骤3:启用自动配置项目的启动类上添加 @EnableAutoConfiguration 注解,以启用 Spring Boot 的自动配置功能。 步骤4:编写数据库操作代码 根据您的业务需求,编写与数据库交互的代码。可以使用 Spring Data JPA 或 JDBC 等技术来简化数据库操作。 以上是使用 Spring Boot 配置 PostgreSQL 数据库的简单步骤。通过这些配置,您可以方便地在 Spring Boot 项目中使用 PostgreSQL 数据库进行开发。 ### 回答3: Spring Boot是一个快速构建基于Spring框架的应用程序的工具。要配置Spring BootPostgreSQL数据库连接,需要完成以下步骤: 1. 引入PostgreSQL依赖:在项目的pom.xml文件中添加PostgreSQL依赖项,例如: ```xml <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>版本号</version> </dependency> ``` 2. 配置数据库连接信息:在application.properties或application.yml文件中添加数据库连接信息,包括数据库URL、用户名、密码等。例如: ```properties spring.datasource.url=jdbc:postgresql://localhost:5432/db_name spring.datasource.username=username spring.datasource.password=password spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect ``` 3. 创建数据源bean:在Spring Boot配置类中创建一个DataSource bean,该bean将使用上述配置数据库连接信息。例如: ```java @Configuration public class DataSourceConfig { @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Bean public DataSource dataSource() { return DataSourceBuilder .create() .url(url) .username(username) .password(password) .build(); } } ``` 4. 创建JdbcTemplate bean:在Spring Boot配置类中创建一个JdbcTemplate bean,用于执行数据库操作。例如: ```java @Configuration public class JdbcTemplateConfig { @Autowired private DataSource dataSource; @Bean public JdbcTemplate jdbcTemplate() { return new JdbcTemplate(dataSource); } } ``` 通过以上步骤,我们成功配置Spring BootPostgreSQL数据库的连接。可以使用JdbcTemplate或其他适合的方式访问数据库进行数据操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值