当然可以!下面我会为你生成一个完整的包含 CRUD(增删改查)功能 的 Spring Boot + MyBatis 项目框架,并附上简单的前端页面(使用 Thymeleaf 进行渲染)。这个项目将以一个简单的“用户管理系统”为例,包含字段:ID、姓名、邮箱。
📁 项目结构
crud-demo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com.example.crud/
│ │ │ ├── controller/
│ │ │ ├── mapper/
│ │ │ ├── model/
│ │ │ ├── service/
│ │ │ ├── CrudDemoApplication.java
│ │ └── resources/
│ │ ├── mapper/
│ │ ├── templates/
│ │ ├── application.yml
│ └── test/
│
├── pom.xml
✅ 1. pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>crud-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis + MySQL -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Lombok(可选) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Spring Boot Maven Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
✅ 2. application.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/crud_db?useSSL=false&serverTimezone=UTC
username: root
password: yourpassword
thymeleaf:
cache: false
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.crud.model
✅ 3. MySQL 表结构
CREATE DATABASE crud_db;
USE crud_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
✅ 4. 实体类 User.java
package com.example.crud.model;
import lombok.Data;
@Data
public class User {
private Integer id;
private String name;
private String email;
}
✅ 5. Mapper 接口 UserMapper.java
package com.example.crud.mapper;
import com.example.crud.model.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface UserMapper {
List<User> findAll();
User findById(Integer id);
int insert(User user);
int update(User user);
int deleteById(Integer id);
}
✅ 6. Mapper XML resources/mapper/UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.crud.mapper.UserMapper">
<select id="findAll" resultType="User">
SELECT * FROM users
</select>
<select id="findById" parameterType="int" resultType="User">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="insert" parameterType="User">
INSERT INTO users(name, email) VALUES(#{name}, #{email})
</insert>
<update id="update" parameterType="User">
UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}
</update>
<delete id="deleteById" parameterType="int">
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>
✅ 7. Service 类
package com.example.crud.service;
import com.example.crud.mapper.UserMapper;
import com.example.crud.model.User;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
private final UserMapper userMapper;
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
public List<User> listAll() {
return userMapper.findAll();
}
public User get(Integer id) {
return userMapper.findById(id);
}
public void save(User user) {
if (user.getId() == null) {
userMapper.insert(user);
} else {
userMapper.update(user);
}
}
public void delete(Integer id) {
userMapper.deleteById(id);
}
}
✅ 8. 控制器 UserController.java
package com.example.crud.controller;
import com.example.crud.model.User;
import com.example.crud.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public String list(Model model) {
model.addAttribute("users", userService.listAll());
return "user-list";
}
@GetMapping("/add")
public String addForm(Model model) {
model.addAttribute("user", new User());
return "user-form";
}
@GetMapping("/edit/{id}")
public String editForm(@PathVariable Integer id, Model model) {
model.addAttribute("user", userService.get(id));
return "user-form";
}
@PostMapping("/save")
public String save(@ModelAttribute User user) {
userService.save(user);
return "redirect:/users";
}
@GetMapping("/delete/{id}")
public String delete(@PathVariable Integer id) {
userService.delete(id);
return "redirect:/users";
}
}
✅ 9. 前端页面(Thymeleaf)
📄 templates/user-list.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>User List</title>
</head>
<body>
<h1>Users</h1>
<a th:href="@{/users/add}">Add User</a>
<table border="1">
<tr>
<th>ID</th><th>Name</th><th>Email</th><th>Actions</th>
</tr>
<tr th:each="user : ${users}">
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.email}"></td>
<td>
<a th:href="@{'/users/edit/' + ${user.id}}">Edit</a> |
<a th:href="@{'/users/delete/' + ${user.id}}"
onclick="return confirm('Confirm delete?')">Delete</a>
</td>
</tr>
</table>
</body>
</html>
📄 templates/user-form.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>User Form</title>
</head>
<body>
<h1>User Form</h1>
<form th:action="@{/users/save}" method="post" th:object="${user}">
<input type="hidden" th:field="*{id}" />
Name: <input type="text" th:field="*{name}" /><br/>
Email: <input type="text" th:field="*{email}" /><br/>
<button type="submit">Save</button>
</form>
<a th:href="@{/users}">Back to list</a>
</body>
</html>
✅ 10. 启动类 CrudDemoApplication.java
package com.example.crud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CrudDemoApplication {
public static void main(String[] args) {
SpringApplication.run(CrudDemoApplication.class, args);
}
}
✅ 使用方式
- 将项目导入 IDEA;
- 配置数据库连接;
- 启动 MySQL 并创建数据库和表;
- 启动应用,访问
http://localhost:8080/users; - 就能进行 CRUD 操作了。
如你需要完整的打包源码(zip 文件)、前端改为 Vue + 接口化 API,或想扩展为 RESTful 风格,也可以告诉我,我可以继续帮你生成对应内容。是否需要打包为一个完整 zip 文件?
Top comments (0)