springboot连接MySQL8配置文件
时间: 2023-05-25 15:06:12 浏览: 324
在Spring Boot中连接MySQL8的配置文件需要指定驱动、URL、用户名和密码等信息。下面是一个简单的例子:
```
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root123456
```
其中,`com.mysql.cj.jdbc.Driver`是MySQL8的驱动类名,`jdbc:mysql://localhost:3306/mydb`是数据库连接地址,`serverTimezone=Asia/Shanghai`是服务器的时间区域,`useUnicode=true`和`characterEncoding=utf-8`是为了保证中文的正确显示。`root`和`root123456`分别是数据库的用户名和密码。
需要注意的是,在MySQL8中,因为时间的存储格式改变导致时区问题,因此在配置URL的时候需要添加`serverTimezone`。
相关问题
SpringBoot连接mysql集群配置
要使用SpringBoot连接MySQL集群,需要进行以下配置:
1. 添加MySQL依赖
在pom.xml文件中添加MySQL依赖:
```xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
```
其中,${mysql.version}是MySQL版本号。
2. 配置数据源
在application.yml文件中配置数据源:
```yaml
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
hikari:
poolName: HikariCP
minimumIdle: 5
maximumPoolSize: 20
connectionTimeout: 30000
idleTimeout: 600000
maxLifetime: 1800000
connectionTestQuery: SELECT 1
dataSource:
type: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
url: jdbc:mysql://mysql1.example.com:3306,mysql2.example.com:3306/mydatabase?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&connectTimeout=5000
user: root
password: root
```
其中,url为MySQL集群地址,多个MySQL地址之间用逗号分隔。
3. 配置连接池
使用Hikari连接池,可以在application.yml文件中配置连接池相关参数。
4. 测试连接
可以在代码中测试连接是否正常:
```java
@Autowired
private DataSource dataSource;
public void testConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();
System.out.println("Connection successful!");
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
springBoot连接mysql主从配置
1. 在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
```
2. 在application.properties中添加以下配置:
```
# 主库配置
spring.datasource.master.url=jdbc:mysql://localhost:3306/master?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.master.username=root
spring.datasource.master.password=root
spring.datasource.master.driver-class-name=com.mysql.jdbc.Driver
# 从库配置
spring.datasource.slave.url=jdbc:mysql://localhost:3306/slave?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.slave.username=root
spring.datasource.slave.password=root
spring.datasource.slave.driver-class-name=com.mysql.jdbc.Driver
# 配置多个从库,用逗号分隔
spring.datasource.slave2.url=jdbc:mysql://localhost:3306/slave2?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.slave2.username=root
spring.datasource.slave2.password=root
spring.datasource.slave2.driver-class-name=com.mysql.jdbc.Driver
# 配置读写分离
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.read-type=READ_ONLY
spring.datasource.master.slaves=slave,slave2
```
3. 在代码中使用@Primary注解来指定默认的数据源:
```
@Configuration
public class DataSourceConfig {
@Bean(name = "masterDataSource")
@ConfigurationProperties(prefix = "spring.datasource.master")
public DataSource masterDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "slaveDataSource")
@ConfigurationProperties(prefix = "spring.datasource.slave")
public DataSource slaveDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "slave2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.slave2")
public DataSource slave2DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "dynamicDataSource")
@Primary // 指定默认的数据源
public DataSource dynamicDataSource() {
DynamicDataSource dynamicDataSource = new DynamicDataSource();
dynamicDataSource.setDefaultTargetDataSource(masterDataSource());
Map<Object, Object> dataSourceMap = new HashMap<>();
dataSourceMap.put("master", masterDataSource());
dataSourceMap.put("slave", slaveDataSource());
dataSourceMap.put("slave2", slave2DataSource());
dynamicDataSource.setTargetDataSources(dataSourceMap);
return dynamicDataSource;
}
}
```
4. 实现自定义的动态数据源:
```
public class DynamicDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return DataSourceContextHolder.getDataSourceType();
}
}
```
5. 创建一个数据源上下文,用于保存当前线程使用的数据源类型:
```
public class DataSourceContextHolder {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<>();
public static void setDataSourceType(String dataSourceType) {
contextHolder.set(dataSourceType);
}
public static String getDataSourceType() {
return contextHolder.get();
}
public static void clearDataSourceType() {
contextHolder.remove();
}
}
```
6. 在service层中根据需要调用不同的数据源:
```
@Service
public class UserService {
@Autowired
private UserDao userDao;
public List<User> findAll() {
// 从主库读取数据
DataSourceContextHolder.setDataSourceType("master");
return userDao.findAll();
}
public User findById(Long id) {
// 从从库1读取数据
DataSourceContextHolder.setDataSourceType("slave");
return userDao.findById(id);
}
public void save(User user) {
// 写入主库
DataSourceContextHolder.setDataSourceType("master");
userDao.save(user);
}
public void deleteById(Long id) {
// 写入主库
DataSourceContextHolder.setDataSourceType("master");
userDao.deleteById(id);
}
}
```