文章目录
-
- [1. 引言](#1. 引言)
- [2. 项目搭建与依赖配置](#2. 项目搭建与依赖配置)
-
- [2.1 添加MyBatis Plus依赖](#2.1 添加MyBatis Plus依赖)
- [2.2 配置数据源与MyBatis Plus](#2.2 配置数据源与MyBatis Plus)
- [3. 实现基本CRUD功能](#3. 实现基本CRUD功能)
-
- [3.1 创建实体类](#3.1 创建实体类)
- [3.2 创建Mapper接口](#3.2 创建Mapper接口)
- [3.3 实现Service层](#3.3 实现Service层)
- [3.4 控制器实现](#3.4 控制器实现)
- [4. 高级功能实现](#4. 高级功能实现)
-
- [4.1 自动填充功能](#4.1 自动填充功能)
- [4.2 乐观锁功能](#4.2 乐观锁功能)
- [4.3 逻辑删除功能](#4.3 逻辑删除功能)
- [5. 拓展:MyBatis Plus的其他功能](#5. 拓展:MyBatis Plus的其他功能)
-
- [5.1 条件构造器](#5.1 条件构造器)
- [5.2 分页查询](#5.2 分页查询)
- [5.3 性能分析](#5.3 性能分析)
- [6. 总结](#6. 总结)
🎉欢迎来到SpringBoot框架学习专栏~
1. 引言
Spring Boot是一款用于快速构建Spring应用程序的框架,而MyBatis Plus是MyBatis的增强工具,提供了许多方便实用的功能,包括基本CRUD操作、自动填充、乐观锁、逻辑删除等。本文将详细介绍如何在Spring Boot项目中整合MyBatis Plus,并展示其基本CRUD功能以及高级功能的实现方式。
2. 项目搭建与依赖配置
首先,确保你已经搭建好了Spring Boot项目。接下来,我们需要添加MyBatis Plus的依赖。
2.1 添加MyBatis Plus依赖
在pom.xml
文件中添加以下依赖:
xml
<!-- MyBatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
2.2 配置数据源与MyBatis Plus
在application.properties
或application.yml
中配置数据库连接信息和MyBatis Plus的相关配置:
yaml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: your_username
password: your_password
mybatis-plus:
mapper-locations: classpath:mapper/**/*.xml
global-config:
db-config:
id-type: auto
configuration:
map-underscore-to-camel-case: true
以上配置中,mapper-locations
指定了MyBatis Plus的XML映射文件路径,map-underscore-to-camel-case
表示数据库字段采用下划线命名,而Java实体类采用驼峰命名。
3. 实现基本CRUD功能
3.1 创建实体类
假设我们有一个实体类User
,对应数据库中的user
表:
java
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.util.Date;
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String username;
private String password;
private Integer age;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableLogic
private Integer deleted;
}
在上述实体类中,使用了@TableName
注解指定了对应的数据库表名,@TableId
表示主键,@TableField
用于自动填充,@TableLogic
表示逻辑删除字段。
3.2 创建Mapper接口
java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
MyBatis Plus提供了BaseMapper
接口,通过继承该接口,即可获得常见的CRUD功能,无需手动编写SQL。
3.3 实现Service层
java
import com.baomidou.mybatisplus.extension.service.IService;
public interface UserService extends IService<User> {
}
创建一个UserService
接口,继承自IService
,该接口提供了常用的Service层方法。
java
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
创建UserServiceImpl
类,实现UserService
接口,并继承自ServiceImpl
,实现了其中的方法。
3.4 控制器实现
java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.getById(id);
}
@GetMapping("/list")
public List<User> listUsers() {
return userService.list();
}
@PostMapping
public void addUser(@RequestBody User user) {
userService.save(user);
}
@PutMapping
public void updateUser(@RequestBody User user) {
userService.updateById(user);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.removeById(id);
}
}
以上代码中,通过注入UserService
实现了基本的CRUD操作的接口。
4. 高级功能实现
4.1 自动填充功能
MyBatis Plus提供了自动填充功能,通过@TableField
注解的fill
属性来指定填充的时机,常用的值有FieldFill.INSERT
和FieldFill.INSERT_UPDATE
。
java
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
上述代码中,createTime
字段在插入时自动填充,updateTime
字段在插入和更新时自动填充。
4.2 乐观锁功能
MyBatis Plus支持乐观锁的实现,通过@Version
注解在实体类的版本字段上添加乐观锁。
java
@Version
private Integer version;
在更新时,MyBatis Plus会自动检测版本字段,如果版本号不匹配,则更新失败。
4.3 逻辑删除功能
MyBatis Plus提供了逻辑删除的功能,通过@TableLogic
注解在实体类的逻辑删除字段上添加逻辑删除标记。
java
@TableLogic
private Integer deleted;
在进行逻辑删除操作时,MyBatis Plus会更新这个字段的值,而不是物理删除记录。
5. 拓展:MyBatis Plus的其他功能
除了上述介绍的功能外,MyBatis Plus还提供了许多其他强大的功能,如条件构造器、分页查询、性能分析、多租户支持等。以下简单介绍一些常用的功能:
5.1 条件构造器
MyBatis Plus的条件构造器可以轻松构建复杂的查询条件:
java
LambdaQueryWrapper<User> wrapper = Wrappers.<User>lambdaQuery()
.eq(User::getUsername, "admin")
.like(User::getPassword, "pass");
List<User> userList = userService.list(wrapper);
5.2 分页查询
MyBatis Plus支持简单的分页查询:
java
IPage<User> page = new Page<>(1, 10);
IPage<User> userPage = userService.page(page, null);
List<User> userList = userPage.getRecords();
5.3 性能分析
MyBatis Plus提供了性能分析插件,可以方便地查看SQL执行情况:
yaml
# application.yml
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
通过配置log-impl
属性,可以将SQL输出到控制台,方便调试与优化。
6. 总结
通过本文的介绍,我们学习了如何在Spring Boot项目中整合MyBatis Plus,并实现了基本的CRUD功能以及高级功能如自动填充、乐观锁、逻辑删除等。MyBatis Plus的强大功能极大地简化了数据库操作,提高了开发效率。在实际项目中,根据具体需求,我们可以更深入地了解MyBatis Plus提供的各种功能,以更好地应对复杂的业务场景。希望通过本文的学习,读者能够更加熟练地使用Spring Boot和MyBatis Plus进行项目开发。
🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:
- 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
- 【Java学习路线】2023年完整版Java学习路线图
- 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
- 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
- 【数据结构学习】从零起步:学习数据结构的完整路径