一、引言
MyBatis-Plus 是 MyBatis 的增强版,提供了 CRUD 接口、分页插件、性能分析插件等特性,简化了开发过程。本文将详细介绍如何在 Spring Boot 项目中集成 MyBatis-Plus。
支持的数据看也越来越多,值得去搞一下,写了一个小例子
二、环境准备
- JDK 8 或以上版本
- Maven 3.8或以上版本
- IntelliJ IDEA 或其他开发工具
- MySQL 数据库
三、创建 Spring Boot 项目
使用 Spring Initializr 创建一个基本的 Spring Boot 项目,并选择如下依赖:
- Spring Web
- MyBatis-Plus
- MySQL Driver
- Lombok(idea中也得安装lombok对应插件)
示例:
可以通过访问 Spring Initializr 在线生成项目或者阿里的也行(https://start.aliyun.com/bootstrap.html),个人比较喜欢用页面的方式,也可以在 IDEA 中直接创建。
四、添加依赖
在 <font style="color:rgb(38, 38, 38);">pom.xml
文件中添加 MyBatis-Plus 的相关依赖:
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis-Plus Starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5</version>
</dependency>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Spring Boot Starter Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
五、配置数据库连接初始化数据
建表语句:
-- test.`user` definition 创建一个test库
CREATE TABLE `user` (
`id` bigint DEFAULT NULL COMMENT 'id',
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '名称',
`age` int DEFAULT NULL COMMENT '年龄',
`email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮件'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
INSERT INTO test.`user` (id,name,age,email) VALUES
(1,'yuanmomo',18,'u8475845@qq.com'),
(2,'eefsfsdf',23,'dfjsdshj@qq.com');
在 <font style="color:rgb(38, 38, 38);">src/main/resources
目录下创建 <font style="color:rgb(38, 38, 38);">application.yml
文件,配置数据库连接信息:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: your_username
password: your_password
mybatis-plus:
mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.yuanmomo.demo.entity
六、创建实体类
在 <font style="color:rgb(38, 38, 38);">src/main/java/com/yuanmomo/demo/entity
目录下创建实体类,例如 <font style="color:rgb(38, 38, 38);">User.java
:
package com.yuanmomo.demo.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("user")
public class User {
/**
* id
*/
@TableId
private Long id;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 邮件
*/
private String email;
}
七、创建 Mapper 接口
在 <font style="color:rgb(38, 38, 38);">src/main/java/com/yuanmomo/demo/mapper
目录下创建 Mapper 接口,例如 <font style="color:rgb(38, 38, 38);">UserMapper.java
:
package com.yuanmomo.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanmomo.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
八、创建 Service 层
在 <font style="color:rgb(38, 38, 38);">src/main/java/com/yuanmomo/demo/service
目录下创建服务接口和实现类:
服务接口 UserService.java
:
package com.yuanmomo.demo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanmomo.demo.entity.User;
public interface UserService extends IService<User> {
}
服务实现类 <font style="color:rgb(38, 38, 38);">UserServiceImpl.java
:
package com.yuanmomo.demo.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanmomo.demo.entity.User;
import com.yuanmomo.demo.mapper.UserMapper;
import com.yuanmomo.demo.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
九、创建 Controller 层
在 <font style="color:rgb(38, 38, 38);">src/main/java/com/yuanmomo/demo/controller
目录下创建控制器类 <font style="color:rgb(38, 38, 38);">UserController.java
:
package com.yuanmomo.demo.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yuanmomo.demo.entity.User;
import com.yuanmomo.demo.service.UserService;
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("/list")
public List<User> list() {
return userService.list();
}
@PostMapping("/add")
public boolean add(@RequestBody User user) {
return userService.save(user);
}
@PutMapping("/update")
public boolean update(@RequestBody User user) {
return userService.updateById(user);
}
@DeleteMapping("/delete/{id}")
public boolean delete(@PathVariable Long id) {
return userService.removeById(id);
}
}
十、编写 Mapper XML 文件
在 <font style="color:rgb(38, 38, 38);">src/main/resources/mapper
目录下创建 <font style="color:rgb(38, 38, 38);">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.yuanmomo.demo.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.yuanmomo.demo.entity.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="email" property="email"/>
</resultMap>
<sql id="Base_Column_List">
id, name, age, email
</sql>
<select id="selectAll" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"/>
FROM user
</select>
</mapper>
十一、运行项目
确保数据库配置正确后,启动 Spring Boot 应用。访问 <font style="color:rgb(38, 38, 38);">http://localhost:8080/user/list
应该能看到用户列表。
十二、总结
通过以上步骤,我们完成了 Spring Boot 项目与 MyBatis-Plus 的集成。MyBatis-Plus 简化了大量繁琐的 CRUD 操作,提高了开发效率。通过结合 Spring Boot 的强大功能,我们可以更快速地构建高效、稳定的企业级应用。
附:完整项目结构
src
├── main
│ ├── java
│ │ └── com
│ │ └── yuanmomo
│ │ └── demo
│ │ ├── controller
│ │ │ └── UserController.java
│ │ ├── entity
│ │ │ └── User.java
│ │ ├── mapper
│ │ │ └── UserMapper.java
│ │ ├── service
│ │ │ ├── UserService.java
│ │ │ └── impl
│ │ │ └── UserServiceImpl.java
│ │ └── DemoApplication.java
│ ├── resources
│ │ ├── application.yml
│ │ └── mapper
│ │ └── UserMapper.xml
│ └── test
│ └── java
│ └── com
│ └── yuanmomo
│ └── demo
│ └── DemoApplicationTests.java
└── pom.xml