在现代软件开发中,Spring Boot的简洁性和Mybatis的灵活性已经赢得了开发者的广泛喜爱。但是,当你想要进一步提升数据操作的效率和简化代码时,Mybatis-Plus(简称MP)无疑是你的首选。Mybatis-Plus作为Mybatis的增强工具,它不仅继承了Mybatis的所有特性,还通过自动代码生成、条件构造器等功能,让数据访问层(DAO)的开发变得更加高效、便捷。
引言
在传统的Spring Boot和Mybatis组合中,我们经常需要编写大量的模板代码,包括实体类、Mapper接口以及XML文件。Mybatis-Plus的出现极大地简化了这一流程,它提供了强大的代码生成器,可以帮助我们自动生成这些代码,并且提供了更为丰富的API来简化数据库操作。
Mybatis-Plus简介
Mybatis-Plus是一款Mybatis的增强工具,在Mybatis的基础上仅增加少量配置即可快速使用。它提供了如下特性:
- 无侵入:只做增强不做改变,引入它不会影响你当前的项目。
- 损耗小:启动即会自动注入基本CRUD,性能基本无损耗。
- 强大的CRUD操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现复杂的CRUD操作。
- 支持Lambda表达式:内置Lambda表达式简化编程。
- 支持ActiveRecord模式:支持ActiveRecord形式的操作,实体类只需继承Model类即可进行强大的CRUD操作。
- 代码生成:采用代码或者Maven插件可快速生成Mapper、Model、Service、Controller层代码,增加开发效率。
- 条件构造器:用于生成复杂的sql语句,使写sql语句简单化。
集成Mybatis-Plus的步骤
环境准备
首先确保你的开发环境中已经安装了Java和Maven,并且你的IDE支持Spring Boot项目。
依赖配置
在你的pom.xml
中加入Mybatis-Plus的依赖:
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Mybatis-Plus Starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.x.x</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>com.mysql.cj.jdbc.Driver</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.x.x</version>
</dependency>
</dependencies>
配置数据源
在application.properties
或application.yml
中配置你的数据源信息:
spring.datasource.url=jdbc:mysql://localhost:3306/your_db?useSSL=false&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
启用Mybatis-Plus
在你的Spring Boot启动类上添加@MapperScan
注解,扫描你的Mapper文件:
@SpringBootApplication
@MapperScan("com.yourpackage.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
实体类和Mapper接口
定义你的实体类,并使用Mybatis-Plus提供的注解:
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
}
创建对应的Mapper接口:
public interface UserMapper extends BaseMapper<User> {
// 所有的CRUD操作已经编写完成
}
服务层和控制层
服务层可以直接注入Mapper使用,也可以通过继承ServiceImpl
来使用通用的服务实现:
@Service
public class UserService extends ServiceImpl<UserMapper, User> {
public List<User> findAll() {
return list();
}
}
控制层调用服务层的方法:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public List<User> listUsers() {
return userService.findAll();
}
}
测试
编写测试用例来验证集成是否成功:
@SpringBootTest
public class MybatisPlusIntegrationTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelect() {
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
Assert.assertEquals(5, userList.size());
userList.forEach(System.out::println);
}
}
高级特性
代码生成器
Mybatis-Plus提供了强大的代码生成器,可以帮助你快速生成Entity、Mapper、Service和Controller代码:
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("author");
gc.setOpen(false);
gc.setFileOverride(true);
mpg.setGlobalConfig(gc);
// ... 数据源配置、包配置等
// 执行生成
mpg.execute();
条件构造器
使用条件构造器可以构建复杂的查询:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);
逻辑删除
在你的实体类字段上使用@TableLogic
注解来启用逻辑删除:
@TableLogic
private Integer deleted;
总结
通过集成Mybatis-Plus,我们可以极大地提升Spring Boot项目开发的效率,简化数据层代码的编写。本文提供了一个从零开始集成Mybatis-Plus的详细指南,希望能够帮助你在项目开发中更加得心应手。
👉 💐🌸 公众号请关注 "果酱桑", 一起学习,一起进步! 🌸💐