spring.datasource.hikari.auto-commit=true
时间: 2023-11-20 16:04:50 浏览: 217
`spring.datasource.hikari.auto-commit=true` 是 Spring Boot 中使用 HikariCP 数据库连接池的配置属性之一。它用于设置连接的自动提交模式。
HikariCP 是一个高性能的 JDBC 连接池,被广泛用于 Spring Boot 项目中。连接的自动提交模式决定了每次执行 SQL 语句后是否自动提交事务。
在这个例子中,`spring.datasource.hikari.auto-commit` 设置为 true,表示连接在执行完每个 SQL 语句后会自动提交事务。
如果将 `spring.datasource.hikari.auto-commit` 设置为 false,则连接在执行完每个 SQL 语句后不会自动提交事务,需要手动调用 `commit()` 方法来提交事务。
自动提交模式的选择取决于应用程序的需求和数据库事务的处理方式。如果应用程序中的每个 SQL 操作都应该立即生效并提交事务,则可以将自动提交模式设置为 true。如果需要手动控制事务的提交,可以将自动提交模式设置为 false,并在适当的时候手动调用 `commit()` 方法。
需要注意的是,使用自动提交模式时应谨慎处理事务操作,以避免意外提交或回滚事务。在需要进行多个 SQL 操作组成一个原子性操作的情况下,最好使用显式事务来确保数据一致性和完整性。
这里提到的配置是基于使用 HikariCP 数据库连接池的 Spring Boot 应用程序。如果使用其他连接池或框架,配置方式和属性名称可能会有所不同。
相关问题
dynamic-datasource-spring-boot-starter 配置连接池
dynamic-datasource-spring-boot-starter 是一个 Spring Boot 的数据源动态切换组件,可以方便地实现多数据源的配置和切换。它支持常见的连接池,如 HikariCP、Tomcat JDBC 等。
以下是使用 dynamic-datasource-spring-boot-starter 配置连接池的步骤:
1. 添加依赖
在 pom.xml 文件中添加以下依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.1</version>
</dependency>
```
2. 配置数据源
在 application.yml 文件中配置数据源,例如:
```yml
spring:
datasource:
dynamic:
primary: db1
datasource:
db1:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
username: root
password: root
db2:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
username: root
password: root
```
此处配置了两个数据源 db1 和 db2,其中 db1 为主数据源。
3. 配置连接池
在 application.yml 文件中配置连接池,例如:
```yml
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
hikari:
maximum-pool-size: 10
minimum-idle: 5
idle-timeout: 60000
connection-timeout: 30000
auto-commit: true
pool-name: HikariCP
max-lifetime: 1800000
connection-test-query: SELECT 1
```
此处使用了 HikariCP 连接池,配置了连接池的一些参数,如最大连接数、最小空闲连接数、连接空闲超时时间等。
4. 注册数据源
在 Spring Boot 启动类中注册数据源,例如:
```java
@SpringBootApplication
@MapperScan(basePackages = "com.example.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
@ConfigurationProperties("spring.datasource.hikari")
public DataSource dataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean
public DataSourceProvider dataSourceProvider(DataSource dataSource) {
return new SingleDataSourceProvider(dataSource);
}
@Bean
public DynamicDataSourceCreator dynamicDataSourceCreator(DataSourceProvider dataSourceProvider) {
DynamicDataSourceCreator creator = new DynamicDataSourceCreator();
creator.setDataSourceProvider(dataSourceProvider);
return creator;
}
@Bean
public DynamicDataSourceRegister dynamicDataSourceRegister(DynamicDataSourceCreator dynamicDataSourceCreator) {
DynamicDataSourceRegister register = new DynamicDataSourceRegister();
register.setDynamicDataSourceCreator(dynamicDataSourceCreator);
return register;
}
}
```
此处使用了 HikariCP 连接池,使用了 @ConfigurationProperties 注解将连接池的配置读取到 DataSource 中,然后将 DataSource 注册到 DynamicDataSourceProvider 中,最后通过 DynamicDataSourceCreator 和 DynamicDataSourceRegister 将数据源注册到 Spring 中。
至此,我们已经完成了 dynamic-datasource-spring-boot-starter 的连接池配置。
SpringBoot 集成 sharding-jdbc-spring-boot-starter 并使用 yml 配置多数据源的方式 进行 分表配置
好的,下面是 SpringBoot 集成 sharding-jdbc-spring-boot-starter 并使用 yml 配置多数据源的方式 进行 分表配置的步骤:
1. 首先,在 pom.xml 文件中添加 sharding-jdbc-spring-boot-starter 依赖,如下所示:
```xml
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>${shardingsphere.version}</version>
</dependency>
```
2. 在 application.yml 配置文件中添加数据源配置,如下所示:
```yml
spring:
datasource:
# 主数据源
master:
url: jdbc:mysql://localhost:3306/db_master?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
username: root
password: root
# 从数据源
slave:
url: jdbc:mysql://localhost:3306/db_slave?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
username: root
password: root
# sharding-jdbc 配置
sharding:
jdbc:
#配置主从数据源名称
data-sources:
# 配置主数据源
master:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
jdbc-url: ${spring.datasource.master.url}
username: ${spring.datasource.master.username}
password: ${spring.datasource.master.password}
hikari:
minimum-idle: 5
maximum-pool-size: 20
auto-commit: true
idle-timeout: 30000
pool-name: master
# 配置从数据源
slave:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
jdbc-url: ${spring.datasource.slave.url}
username: ${spring.datasource.slave.username}
password: ${spring.datasource.slave.password}
hikari:
minimum-idle: 5
maximum-pool-size: 20
auto-commit: true
idle-timeout: 30000
pool-name: slave
# 配置表规则
sharding:
tables:
# 配置分表规则
user:
actual-data-nodes: master.user_${0..2}
table-strategy:
inline:
sharding-column: id
algorithm-expression: user_${id % 3}
key-generator:
type: SNOWFLAKE
column: id
props:
worker-id: 123
# 配置读写分离规则
master-slave-rules:
- name: ms
master-data-source-name: master
slave-data-source-names: slave
```
3. 在代码中使用数据源,如下所示:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void addUser(User user) {
String sql = "insert into user(id, name, age) values(?, ?, ?)";
Object[] params = new Object[]{user.getId(), user.getName(), user.getAge()};
jdbcTemplate.update(sql, params);
}
@Override
public List<User> getUsers() {
String sql = "select * from user";
List<User> userList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
return userList;
}
}
```
希望这些步骤能够帮助你集成 sharding-jdbc-spring-boot-starter 并使用 yml 配置多数据源的方式进行分表配置。如果你有更多的问题,欢迎随时向我提问。
阅读全文