📅  最后修改于: 2023-12-03 15:20:13.205000             🧑  作者: Mango
Spring JDBC是Spring框架中提供的一种数据访问技术,使用它可以方便地访问关系型数据库。使用Spring JDBC,我们需要配置数据源,本文就来介绍如何配置数据源。
在使用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>
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连接池特有的一些配置属性,用于控制连接池中连接的初始数量、最小数量、最大数量以及连接的最大空闲时间。
配置好数据源之后,就可以在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的数据源配置,可以在代码中方便地访问关系型数据库了。