SpringBoot JdbcTemplate 使用方法解析
在SpringBoot中,我们可以通过使用JdbcTemplate来简化我们的数据库操作。本文将给出关于使用JdbcTemplate的详细说明和示例代码。我们将从以下方面给出解析:
- 配置SpringBoot和JdbcTemplate
- JdbcTemplate基本的CURD操作
- 示例代码
配置SpringBoot和JdbcTemplate
1.首先在pom.xml中加入以下依赖:
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
...
</dependencies>
2.在SpringBoot的application.properties文件中加入以下配置:
# DataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
# JdbcTemplate
spring.jdbc.template.max-rows=50000
spring.jdbc.template.fetch-size=10000
以上配置项中,主要是关于数据源的配置,其中spring.jdbc.template.max-rows和spring.jdbc.template.fetch-size是JdbcTemplate中特有的两个配置项,分别表示最大记录数和获取记录数。
3.在SpringBoot的配置类中添加@Bean注解:
@Configuration
public class JdbcConfig {
@Autowired
private DataSource dataSource;
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource);
}
}
以上代码执行了一个@Bean注解,创建了一个JdbcTemplate的Bean,使我们可以通过自动注入的方式在我们的Service和DAO类中使用JdbcTemplate。
JdbcTemplate基本的CURD操作
JdbcTemplate最基本的CURD操作包括:查询、插入、更新和删除。
查询
以下是基于JdbcTemplate查询的示例代码:
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public List<User> getUsers() {
String sql = "SELECT * FROM user";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
}
}
以上代码中,我们通过自动注入的方式获取JdbcTemplate实例,然后使用它执行一个查询操作。其中,我们使用了query方法和BeanPropertyRowMapper,query方法用于执行SQL查询,BeanPropertyRowMapper用于将查询结果映射为Java对象。
插入
以下是基于JdbcTemplate插入的示例代码:
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public int saveUser(User user) {
String sql = "INSERT INTO user (name, age) VALUES (?, ?)";
return jdbcTemplate.update(sql, user.getName(), user.getAge());
}
}
以上代码中,我们同样使用了自动注入的方式获取JdbcTemplate实例,然后使用了update方法执行SQL插入操作。其中,我们使用了?占位符来代替SQL语句中的参数,同时使用了update方法的可变参数来传递参数值。
更新
以下是基于JdbcTemplate更新的示例代码:
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public int updateUser(User user) {
String sql = "UPDATE user SET name = ?, age = ? WHERE id = ?";
return jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId());
}
}
以上代码中,我们同样使用了自动注入的方式获取JdbcTemplate实例,然后使用了update方法执行SQL更新操作。其中,我们使用了?占位符来代替SQL语句中的参数,同时使用了update方法的可变参数来传递参数值。
删除
以下是基于JdbcTemplate删除的示例代码:
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public int deleteUser(User user) {
String sql = "DELETE FROM user WHERE id = ?";
return jdbcTemplate.update(sql, user.getId());
}
}
以上代码中,我们同样使用了自动注入的方式获取JdbcTemplate实例,然后使用了update方法执行SQL删除操作。其中,我们使用了?占位符来代替SQL语句中的参数,同时使用了update方法的可变参数来传递参数值。
示例代码
以下是基于JdbcTemplate的完整代码示例:
@RestController
public class UserController {
@Autowired
private UserDao userDao;
@GetMapping("/users")
public List<User> getUsers() {
return userDao.getUsers();
}
@PostMapping("/user")
public int saveUser(@RequestBody User user) {
return userDao.saveUser(user);
}
@PutMapping("/user")
public int updateUser(@RequestBody User user) {
return userDao.updateUser(user);
}
@DeleteMapping("/user")
public int deleteUser(@RequestBody User user) {
return userDao.deleteUser(user);
}
}
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public List<User> getUsers() {
String sql = "SELECT * FROM user";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
}
public int saveUser(User user) {
String sql = "INSERT INTO user (name, age) VALUES (?, ?)";
return jdbcTemplate.update(sql, user.getName(), user.getAge());
}
public int updateUser(User user) {
String sql = "UPDATE user SET name = ?, age = ? WHERE id = ?";
return jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId());
}
public int deleteUser(User user) {
String sql = "DELETE FROM user WHERE id = ?";
return jdbcTemplate.update(sql, user.getId());
}
}
public class User {
private Long id;
private String name;
private Integer age;
// 省略getter和setter方法
}
以上为通过JdbcTemplate实现CRUD操作的代码示例,其中包括了configuration、controller、dao和entity四个模块的相关代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot jdbctemplate使用方法解析 - Python技术站