在若依框架中,使用DruidDataSource多数据源配置,并使用preparedstatement 预编译进行查询和批量插入,给出详细代码示例
时间: 2024-02-20 14:57:13 浏览: 98
DruidDataSource数据源配置详解
5星 · 资源好评率100%
好的,针对你的问题,我可以给出以下的若依框架中多数据源配置和使用PreparedStatement进行查询和批量插入的代码示例:
1. 多数据源配置
在若依框架中,我们可以通过在application.yml或application.properties中配置多个数据源,如下所示:
application.yml
```yaml
spring:
datasource:
# 默认数据源
url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
# 第二个数据源
slave:
url: jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
```
2. 使用PreparedStatement进行查询
在使用PreparedStatement进行查询时,我们需要先获取Connection对象,然后再通过Connection对象获取PreparedStatement对象,最后通过PreparedStatement对象执行查询操作,如下所示:
```java
@Autowired
private DataSource dataSource;
public void query() throws SQLException {
// 获取Connection对象
Connection conn = dataSource.getConnection();
// 定义SQL语句
String sql = "SELECT * FROM user WHERE id = ?";
// 获取PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 设置参数
ps.setInt(1, 1);
// 执行查询操作
ResultSet rs = ps.executeQuery();
// 处理查询结果
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("id=" + id + ", name=" + name + ", age=" + age);
}
// 关闭资源
rs.close();
ps.close();
conn.close();
}
```
3. 使用PreparedStatement进行批量插入
在使用PreparedStatement进行批量插入时,我们需要先获取Connection对象,然后再通过Connection对象获取PreparedStatement对象,最后通过PreparedStatement对象执行批量插入操作,如下所示:
```java
@Autowired
private DataSource dataSource;
public void batchInsert() throws SQLException {
// 获取Connection对象
Connection conn = dataSource.getConnection();
// 定义SQL语句
String sql = "INSERT INTO user (name, age) VALUES (?, ?)";
// 获取PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 设置参数并添加到批量插入的集合中
for (int i = 0; i < 100; i++) {
ps.setString(1, "user" + i);
ps.setInt(2, i);
ps.addBatch();
}
// 执行批量插入操作
int[] result = ps.executeBatch();
// 处理插入结果
for (int i : result) {
System.out.print(i + " ");
}
// 关闭资源
ps.close();
conn.close();
}
```
以上就是若依框架中使用DruidDataSource多数据源配置,并使用PreparedStatement进行查询和批量插入的详细代码示例。
阅读全文