springboot mybatis 项目结构说明
时间: 2024-12-31 08:19:17 浏览: 6
### Spring Boot与MyBatis结合使用的项目结构
#### 1. Maven依赖配置
为了使Spring Boot能够顺利集成MyBatis,在`pom.xml`文件中需引入必要的依赖项。这些依赖不仅包含了Spring Boot的核心组件,也涵盖了MyBatis及其与Spring Boot的适配器。
```xml
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis-Spring Boot Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- MySQL Connector Java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Other dependencies... -->
</dependencies>
```
上述代码展示了如何通过Maven管理工具来声明所需的库文件[^1]。
#### 2. 配置数据源和MyBatis设置
在`application.properties`或`application.yml`文件内定义数据库连接参数以及MyBatis特定属性:
对于`.properties`格式:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.demo.model
```
而对于`.yml`格式,则如下所示:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo.model
```
此部分描述了怎样利用配置文件指定持久层所需的信息。
#### 3. 创建实体类(Entity Classes)
通常位于项目的`model`包下,用于映射关系型数据库表中的记录到Java对象实例上。例如创建一个名为`User.java`的简单POJO(Plain Old Java Object),它代表用户表格的数据模型。
```java
package com.example.demo.model;
public class User {
private Long id;
private String name;
private Integer age;
// Getters & Setters...
}
```
这段说明解释了实体类的作用并给出了具体的实现例子。
#### 4. 编写Mapper接口
Mapper接口负责定义操作数据库的方法签名,并由框架自动生成其实现逻辑。一般放置于`mapper`目录之下,比如下面这个`UserMapper.java`就是用来处理关于用户的CRUD(增删改查)动作。
```java
package com.example.demo.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User selectById(Long id);
List<User> findAll();
int insert(User user);
boolean update(User user);
void deleteById(Long id);
}
```
这里介绍了什么是Mapper接口以及它们是如何工作的。
#### 5. Service服务层设计
业务逻辑应当封装在一个独立的服务层(Service Layer),该层次可以调用多个DAO(Data Access Objects)/Repository完成复杂的事务流程。以`UserService.java`为例展示了一个典型的设计模式。
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserInfo(Long userId){
return this.userMapper.selectById(userId);
}
@Override
public void saveOrUpdateUser(User user){
if(null != user.getId()){
this.userMapper.update(user);
}else{
this.userMapper.insert(user);
}
}
@Override
public void removeUser(Long userId){
this.userMapper.deleteById(userId);
}
}
```
这部分强调了分层架构的重要性,并提供了具体的应用案例。
#### 6. 控制器(Controller Layer)
最后一步是在控制器层面暴露RESTful API端点给前端应用或其他外部系统消费。假设有一个简单的HTTP GET请求返回所有用户的列表信息。
```java
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("")
public ResponseEntity<List<User>> getAllUsers(){
List<User> userList = userService.findAll();
return new ResponseEntity<>(userList, HttpStatus.OK);
}
}
```
至此已经完成了整个基于Spring Boot + MyBatis技术栈构建Web应用程序的基础介绍。
阅读全文