📜  Spring JDBC-配置数据源(1)

📅  最后修改于: 2023-12-03 15:20:13.205000             🧑  作者: Mango

Spring JDBC-配置数据源

Spring JDBC是Spring框架中提供的一种数据访问技术,使用它可以方便地访问关系型数据库。使用Spring JDBC,我们需要配置数据源,本文就来介绍如何配置数据源。

1. 导入依赖

在使用Spring JDBC之前,需要在项目中添加相关依赖。可以在pom.xml文件中添加如下依赖:

<!-- Spring JDBC -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.3.8</version>
</dependency>

<!-- MySQL JDBC -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.26</version>
</dependency>
2. 配置数据源

Spring JDBC中使用的是javax.sql.DataSource接口来管理数据源,我们需要在Spring配置文件中配置它。可以在Spring配置文件(如applicationContext.xml)中添加如下配置:

<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
  <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
  <property name="user" value="root"/>
  <property name="password" value="root"/>
  <property name="initialPoolSize" value="5"/>
  <property name="minPoolSize" value="5"/>
  <property name="maxPoolSize" value="20"/>
  <property name="maxIdleTime" value="1800"/>
</bean>

这里我们使用了c3p0连接池,包含了一些常用的配置属性,如driverClass、jdbcUrl、user、password等。其中initialPoolSize、minPoolSize、maxPoolSize、maxIdleTime是c3p0连接池特有的一些配置属性,用于控制连接池中连接的初始数量、最小数量、最大数量以及连接的最大空闲时间。

3. 使用数据源

配置好数据源之后,就可以在Spring中使用它了。可以在DAO层中使用它,如下:

@Repository
public class UserDaoImpl implements UserDao {

  private JdbcTemplate jdbcTemplate;

  @Autowired
  public UserDaoImpl(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);
  }

  @Override
  public User getUserById(Long userId) {
    String sql = "select * from user where id = ?";
    RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
    return jdbcTemplate.queryForObject(sql, new Object[]{userId}, rowMapper);
  }

  @Override
  public void addUser(User user) {
    String sql = "insert into user(name, age) values(?, ?)";
    jdbcTemplate.update(sql, user.getName(), user.getAge());
  }

  @Override
  public void updateUser(User user) {
    String sql = "update user set name = ?, age = ? where id = ?";
    jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId());
  }

  @Override
  public void deleteUser(Long userId) {
    String sql = "delete from user where id = ?";
    jdbcTemplate.update(sql, userId);
  }
}

这里我们使用了JdbcTemplate来执行SQL语句,需要在DAO类的构造方法中注入数据源。

至此,我们已经完成了Spring JDBC的数据源配置,可以在代码中方便地访问关系型数据库了。