前言
SpringBoot 整合 MySQL(使用 JdbcTemplate
实现) 教程。
实现
理论
JdbcTemplate
是 Spring
框架中的一个核心组件,它提供了一种简单的方式来访问关系型数据库。JdbcTemplate
封装了 JDBC API
,使得开发者可以更加方便地使用 JDBC 进行数据库操作,而无需手动管理连接、执行 SQL 语句、处理结果集等操作。使用 JdbcTemplate
可以大大简化数据库访问的代码量,提高开发效率。
JdbcTemplate
提供了一组方法,用于执行SQL语句、处理结果集、处理异常等操作。它还支持命名参数和占位符参数,可以方便地构建参数化的SQL语句。此外,JdbcTemplate
还支持事务管理,可以通过编程方式或声明式方式来管理事务。
总之,JdbcTemplate
是一个非常方便的工具,可以帮助开发者快速、简单地访问关系型数据库。
数据库
安装 MySQL 数据库后,创建一个如下数据表:
- CREATE TABLE `user` (
- `id` int NOT NULL AUTO_INCREMENT COMMENT '自增ID',
- `name` varchar(255) COMMENT '用户名',
- `password` varchar(255) COMMENT '密码',
- `age` int COMMENT '年龄',
- `deleted` tinyint NOT NULL DEFAULT 1 COMMENT '是否删除:1-启用,99-删除',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
并且在数据表中添加如下一行数据:
- INSERT INTO `user` (`name`, `password`, `age`) VALUES ('郎家岭伯爵', '123456', '18');
SpringBoot
pom引入依赖
创建SpringBoot 项目后在 pom.xml 文件中引入 MySQL 的依赖:
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>8.0.11</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
properties配置文件
在 application.properties 配置文件中添加如下 MySQL 配置项:
- spring.datasource.username=root
- spring.datasource.password=
- spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
这里根据实际情况修改为自己数据库的设置。
User实体类
- package com.langjialing.springbootmysql.pojo;
- /**
- * @author 郎家岭伯爵
- */
- public class User {
- private Integer id;
- private String name;
- private String password;
- private Integer age;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- }
Service层
Service 接口类:
- package com.langjialing.springbootmysql.service;
- import com.langjialing.springbootmysql.pojo.User;
- import java.util.List;
- /**
- * @author 郎家岭伯爵
- */
- public interface IUserDao {
- /**
- * 新增用户
- * @param user user
- */
- void insert(User user);
- /**
- * 更新用户
- * @param user user
- */
- void update(User user);
- /**
- * 根据ID删除用户
- * @param id id
- */
- void delete(int id);
- /**
- * 根据ID查找用户
- * @param id id
- * @return user
- */
- User findById(int id);
- /**
- * 查找用户列表
- * @return List
- */
- List<User> findAll();
- }
Service 接口实现类:
- package com.langjialing.springbootmysql.service.impl;
- import com.langjialing.springbootmysql.service.IUserDao;
- import com.langjialing.springbootmysql.pojo.User;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.core.RowMapper;
- import org.springframework.stereotype.Repository;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.List;
- /**
- * @author Administrator
- */
- @Repository
- public class UserDaoImpl implements IUserDao {
- @Autowired
- private JdbcTemplate jdbcTemplate;
- @Override
- public void insert(User user) {
- String sql = "INSERT INTO user (name, age) VALUES (?, ?)";
- jdbcTemplate.update(sql, user.getName(), user.getAge());
- }
- @Override
- public void update(User user) {
- String sql = "UPDATE user SET name = ?, age = ? WHERE id = ?";
- jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId());
- }
- @Override
- public void delete(int id) {
- String sql = "DELETE FROM user WHERE id = ?";
- jdbcTemplate.update(sql, id);
- }
- @Override
- public User findById(int id) {
- String sql = "SELECT * FROM user WHERE id = ?";
- return jdbcTemplate.queryForObject(sql, new Object[]{id}, new UserRowMapper());
- }
- @Override
- public List<User> findAll() {
- String sql = "SELECT * FROM user";
- return jdbcTemplate.query(sql, new UserRowMapper());
- }
- static class UserRowMapper implements 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"));
- user.setPassword(resultSet.getString("password"));
- return user;
- }
- }
- }
Controller层
在 Controller 层中进行测试 CRUD:
- package com.langjialing.springbootmysql.controller;
- import com.langjialing.springbootmysql.service.IUserDao;
- import com.langjialing.springbootmysql.pojo.User;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import java.util.List;
- /**
- * @Author 郎家岭伯爵
- * @Description UserController
- * @Date 2023/6/3 21:03
- * @Version 1.0
- */
- @RestController
- public class UserController {
- @Autowired
- private IUserDao userDao;
- @PostMapping("/insertUser")
- public String insertUser(@RequestBody User user){
- try{
- userDao.insert(user);
- return "用户添加成功!";
- } catch (Exception e){
- return "用户添加失败!失败信息为:" + e.getMessage();
- }
- }
- @PostMapping("/updateUser")
- public String updateUser(@RequestBody User user){
- userDao.update(user);
- return "用户更新成功!";
- }
- @GetMapping("/deleteUserById")
- public void deleteUserById(@RequestParam int id){
- userDao.delete(id);
- }
- @GetMapping("/findUserById")
- public User findUserById(@RequestParam int id){
- return userDao.findById(id);
- }
- @GetMapping("/findAllUser")
- public List<User> findAllUser(){
- return userDao.findAll();
- }
- }
使用Postman测试
这里我们使用 Postman 调用接口,从而来测试我们的 CRUD。这里我们展示两个接口,其它大家可自行测试。
总结
SpringBoot 整合 MySQL(使用 JdbcTemplate
实现) 教程。