针对SpringBoot整合JdbcTemplate的示例代码,我提供以下完整攻略:
简介
Spring Boot 是一个快速开发框架,而 JdbcTemplate 是 Spring 框架中用来简化 JDBC 操作的工具类。在 Spring Boot 中使用 JdbcTemplate,能够帮助我们更加简单快捷地完成数据库访问操作。
背景
为了演示SpringBoot整合JdbcTemplate,我们在此假定,需要写代码来实现简单的查询和更新数据的功能,数据存储在MySQL数据库中。
环境
在开始示例之前,需要搭建Java开发环境和MySQL数据库,可以在官网下载相应的安装包或使用Docker容器部署环境。
为了更好地演示,我们这里建议使用IntelliJ IDEA作为开发工具,在其Maven项目中,添加以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
示例 1:查询数据
工程结构
示例1的工程结构如下:
src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ ├── JdbcTemplateDemoApplication.java # SpringBoot入口启动类
│ │ └── dao
│ │ └── UserDao.java # 数据访问对象
│ └── resources
│ ├── application.properties # 配置文件
│ └── schema.sql
配置文件
在 application.properties 中增加以下内容:
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
数据库表定义
在 schema.sql 文件中定义用户表:
CREATE TABLE USER(
ID BIGINT(20) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(40) NOT NULL,
AGE INT(10)
);
查询代码实现
在 UserDao 中定义查询代码实现:
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public List<User> findAll() {
return jdbcTemplate.query("SELECT * FROM USER",
(resultSet, i) -> new User(resultSet.getLong("id"),
resultSet.getString("name"), resultSet.getInt("age")));
}
}
此处使用 JdbcTemplate 的 query() 方法查询用户表中所有用户,将查询结果映射成 User 类型的对象后返回。
启动类
在 JdbcTemplateDemoApplication 中进行 SpringBoot 启动,示例代码如下:
@SpringBootApplication
public class JdbcTemplateDemoApplication {
public static void main(String[] args) {
SpringApplication.run(JdbcTemplateDemoApplication.class, args);
}
}
测试
启动应用程序,在浏览器中访问 http://localhost:8080/users,可以看到返回的用户信息列表如下:
[{"id":1,"name":"Tom","age":21},{"id":2,"name":"Jerry","age":22}]
示例 2:更新数据
更新代码实现
在 UserDao 中定义更新代码实现:
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public int update(User user) {
String sql = "UPDATE USER SET NAME = ?, AGE = ? WHERE ID = ?";
return jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId());
}
}
此处使用 JdbcTemplate 的 update() 方法更新用户表中指定用户的信息。
控制器
在 UserController 中定义控制器实现:
@RestController
public class UserController {
@Autowired
private UserDao userDao;
@GetMapping("/users/{id}")
public User getUser(@PathVariable("id") Long id) {
return userDao.findById(id);
}
@PutMapping("/users/{id}")
public String updateUser(@PathVariable("id") Long id, @RequestBody User user) {
user.setId(id);
int result = userDao.update(user);
return result == 1 ? "SUCCESS" : "ERROR";
}
}
此处使用 SpringBoot 的 @RestController 注解定义控制器,并在其中进行更新操作。其中,getUser() 方法用于返回指定用户信息,updateUser() 方法则用于为指定用户更新信息。
测试
启动应用程序,在 Postman 中进行如下请求:
- GET http://localhost:8080/users/1,获取 ID 为 1 的用户信息,结果为
{"id":1,"name":"Tom","age":21}
; - PUT http://localhost:8080/users/1,将 ID 为 1 的用户更新为
{"name":"Tommy","age":23}
,结果为 "SUCCESS"; - GET http://localhost:8080/users/1,再次获取 ID 为 1 的用户信息,结果为
{"id":1,"name":"Tommy","age":23}
。
至此,一个简单的 SpringBoot 整合 JdbcTemplate 的示例已经实现,包括了查询和更新数据的操作。通过这个示例,大家可以深入了解 JdbcTemplate 的相关操作方法,同时也了解了基于 SpringBoot 框架实现数据库操作的基本过程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合JdbcTemplate的示例代码 - Python技术站