下面我来介绍一下Spring JDBC的使用详解攻略。
前置条件
在使用Spring JDBC之前,需要保证以下条件得到满足:
- 首先需要添加Spring JDBC相关的依赖包,如
spring-jdbc
。 - 在应用程序的配置文件中,需要配置数据源。这里以MySQL数据源为例,配置好数据源的连接信息,并在配置文件中声明数据源的bean。
Spring JDBC的基本步骤
- 注入DataSource:在使用Spring JDBC时,首先需要通过
<bean>
标签在Spring中配置一个DataSource
,并将其注入到需要使用它的类中。Spring官方提供了很多种不同的datasource,包括SimpleDriverDataSource
,DriverManagerDataSource
等。
下面是一个使用DriverManagerDataSource
配置MySQL数据源的例子:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
- 执行SQL:Spring提供了
JdbcTemplate
来处理所有的JDBC操作。通过JdbcTemplate
执行SQL语句,可以简化操作,不再需要手动创建连接对象、准备语句、处理结果等等。
使用JdbcTemplate
需要在配置文件中注入数据源,并将其注入到需要使用它的类中:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
- 查询数据:使用
query()
方法进行查询操作。以下是查询所有用户的示例代码:
String sql = "select * from user";
List<User> userList = jdbcTemplate.query(sql, new RowMapper<User>() {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
User user = new User();
user.setId(resultSet.getInt("id"));
user.setName(resultSet.getString("name"));
user.setAge(resultSet.getInt("age"));
return user;
}
});
这里使用了一个RowMapper
来将从数据库中查询到的每一行结果映射为一个Java对象,这里映射为了一个User
对象。
- 插入数据:使用
update()
方法进行插入操作。以下是插入用户信息的示例代码:
String sql = "insert into user(id, name, age) values(?, ?, ?)";
int count = jdbcTemplate.update(sql, user.getId(), user.getName(), user.getAge());
这里使用了占位符的方式来传递参数,可以有效避免SQL注入的问题。
示例
示例一:查询用户信息
下面是一个简单的查询用户信息的示例代码:
public List<User> findAll() {
String sql = "select * from user";
List<User> userList = jdbcTemplate.query(sql, new RowMapper<User>() {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
User user = new User();
user.setId(resultSet.getInt("id"));
user.setName(resultSet.getString("name"));
user.setAge(resultSet.getInt("age"));
return user;
}
});
return userList;
}
示例二:插入用户信息
下面是一个简单的插入用户信息的示例代码:
public int save(User user) {
String sql = "insert into user(id, name, age) values(?, ?, ?)";
int count = jdbcTemplate.update(sql, user.getId(), user.getName(), user.getAge());
return count;
}
这里使用占位符的方式来传递参数,可以有效避免SQL注入的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring JDBC的使用详解 - Python技术站