1. 引言
Spring Boot 是一个快速创建基于 Spring 框架的应用的框架,而 Thymeleaf 是一个用于渲染动态 HTML 页面的数据驱动的模板引擎,MyBatis 则是一种灵活的持久层框架,简化了数据库操作。本文将介绍如何将 Thymeleaf、MyBatis 和 Spring Boot 一起使用,构建一个简单的 web 应用。###
2. 项目环境与工具
- 开发工具:IntelliJ IDEA
- 构建工具:Maven
- 数据库:MySQL
- Spring Boot:3.0.3
- Thymeleaf:Spring Boot 默认集成
- MyBatis:通过 `mybatis-spring-boot-starter` 依赖集成
3. 项目结构设计
项目结构如下:
project-root
│
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com.example.demo
│ │ │ ├── controller
│ │ │ ├── service
│ │ │ ├── mapper
│ │ │ ├── entity
│ │ │ └── DemoApplication.java
│ │ ├── resources
│ │ │ ├── mapper
│ │ │ │ └── UserMapper.xml
│ │ │ ├── templates
│ │ │ │ └── user-list.html
│ │ │ ├── application.yml
│ └── test
└── pom.xml (或 build.gradle)
4. 依赖配置
Maven 配置
在 `pom.xml` 文件中添加以下依赖:
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Spring Boot 测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
application.yml
server:
servlet:
context-path: /demo
spring:
thymeleaf:
cache: false
prefix: classpath:/templates/
suffix: .html
datasource:
type: com.mysql.cj.jdbc.MysqlDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/my-tieba?characterEncoding=UTF-8
username: root
password: root
mybatis:
mapper-locations: classpath:com/example/mapper/*.xml
type-aliases-package: com.example.entity
logging:
level:
root: info
com.example: debug
6. 创建实体类
在 `com.example.demo.entity` 包中创建实体类 `User`,与数据库中的表对应:
(使用了lombok)
@Setter
@Getter
public class User {
private Long id;
private String name;
private String email;
}
7. 创建 MyBatis Mapper 接口和 XML
7.1. Mapper 接口
在 `com.example.demo.mapper` 包中创建 `UserMapper` 接口:
@Mapper
public interface UserMapper {
List<User> findAll();
}
7.2. XML 文件
在 `resources/mapper` 目录下创建 `UserMapper.xml`:
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="findAll" resultType="com.example.demo.entity.User">
SELECT * FROM users;
</select>
</mapper>
8. 创建 Service 层
在 `com.example.demo.service` 包中创建 `UserService` 类,封装业务逻辑:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getAllUsers() {
return userMapper.findAll();
}
}
9. 创建 Controller 层
在 `com.example.demo.controller` 包中创建 `UserController` 类,处理客户端请求并返回视图:
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public String getAllUsers(Model model) {
List<User> users = userService.getAllUsers();
model.addAttribute("users", users);
return "user-list";
}
}
10. Thymeleaf 模板
在 `resources/templates` 目录下创建 `user-list.html`,用于展示用户列表:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>User List</title>
</head>
<body>
<h1>User List</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr th:each="user : ${users}">
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.email}"></td>
</tr>
</tbody>
</table>
</body>
</html>
11. 启动类
在 com.example.demo
包中创建 Spring Boot 启动类 DemoApplication
:
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
总结
通过将 Thymeleaf、MyBatis 和 Spring Boot 集成在一起,可以快速构建一个数据库驱动的动态 Web 应用。Thymeleaf 简化了视图层的动态渲染,MyBatis 则通过 XML 或注解方式简化了数据库操作,而 Spring Boot 提供了一个极简的配置和启动方式,使得开发变得高效。