记录一下个人整理的一个SpringBoot+MyBatis+lombok进行数据库增删改查的小案例,可以用于理解学习
1. 项目结构截图
2. pom.xml配置文件
- Maven配置文件路径:
MyBatis.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.7-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>Mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Mybatis</name>
<description>Mybatis</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>3.0.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</project>
3.application.properties
路径:src.resources.application.properties
spring.application.name=Mybatis
# 开启日志文件
logging.level.root=INFO
logging.level.org.springframework=DEBUG
logging.level.org.mybatis=DEBUG
logging.level.com.example.mybatis=DEBUG
# 数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/test?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
4. MybatisApplication
SpringBoot启动类
路径:Mybatis.src.main.java.com.example.mybatis.MybatisApplication
package com.example.mybatis;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MybatisApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisApplication.class, args);
}
}
5. User
用户类,路径:Mybatis.src.main.java.com.example.mybatis.User.Entity.User
package com.example.mybatis.User.Entity;
import lombok.*;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private int id;
private String name;
private String email;
private int age;
}
6. UserMapper
Mapper接口路径:Mybatis.src.main.java.com.example.mybatis.User.Mapper.UserMapper
package com.example.mybatis.User.Mapper;
import com.example.mybatis.User.Entity.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM User")
List<User> getAllUsers();
@Select(" SELECT * FROM User WHERE id = #{id}")
User getUserById(int id);
@Insert("INSERT INTO User (name, age, email) VALUES (#{name}, #{age}, #{email})")
int insertUser(User user);
@Update(" UPDATE User SET name = #{name}, age = #{age}, email = #{email} WHERE id = #{id}")
int updateUser(User user);
@Delete("DELETE FROM User WHERE id = #{id}")
int deleteUser(int id);
}
7. UserDao
路径:Mybatis.src.main.java.com.example.mybatis.Use.Dao.UserDao
package com.example.mybatis.User.Dao;
import com.example.mybatis.User.Entity.User;
import com.example.mybatis.User.Mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserDao {
private final UserMapper userMapper;
@Autowired
public UserDao(UserMapper userMapper){
this.userMapper = userMapper;
}
public List<User> findAll() {
return userMapper.getAllUsers();
}
public User findUserById(int id) {
return userMapper.getUserById(id);
}
public int addUser(User user) {
return userMapper.insertUser(user);
}
public int updateUser(User user) {
return userMapper.updateUser(user);
}
public int deleteUserById(int id) {
return userMapper.deleteUser(id);
}
}
8.UserController
路径:Mybatis.src.main.java.com.example.mybatis.User.Controller.UserController
package com.example.mybatis.User.Controller;
import com.example.mybatis.User.Dao.UserDao;
import com.example.mybatis.User.Entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
private final UserDao userDao;
@Autowired
public UserController(UserDao userDao){
this.userDao = userDao;
}
/**
* 获取所有用户
*
* @return 用户列表
*/
@GetMapping("/getAllUsers")
public List<User> getAllUsers() {
return userDao.findAll();
}
/**
* 根据id查询用户
* @param id
* @return
*/
@GetMapping("/getUserById")
public User getUserById(@RequestParam int id) {
return userDao.findUserById(id);
}
/**
* 根据 ID 删除用户
*
* @param id 用户 ID
* @return 操作结果
*/
@DeleteMapping("deleteUser")
public String deleteUserById(@RequestParam int id) {
System.out.println(id);
int rowsAffected = userDao.deleteUserById(id);
return rowsAffected > 0 ? "User deleted successfully!" : "User not found!";
}
/**
* 添加新用户
*
* @param user 用户对象
* @return 操作结果
*/
@PostMapping("/addUser")
public String addUser(@RequestBody User user) {
int rowsAffected = userDao.addUser(user);
return rowsAffected > 0 ? "User added successfully!" : "Failed to add user!";
}
/**
* 更新用户
* @param user
* @return
*/
@PostMapping("/updateUser")
public String updateUser(@RequestBody User user) {
int rowsAffected = userDao.updateUser(user);
return rowsAffected > 0 ? "User update successfully!" : "Failed to update user!";
}
}
d to add user!";
}
/**
* 更新用户
* @param user
* @return
*/
@PostMapping("/updateUser")
public String updateUser(@RequestBody User user) {
int rowsAffected = userDao.updateUser(user);
return rowsAffected > 0 ? "User update successfully!" : "Failed to update user!";
}
}