1. 环境准备
- Spring Boot版本:2.x(推荐2.7.x)
- MyBatis Plus版本:3.5.x(兼容Spring Boot 2)
- 数据库:MySQL 8.0+(其他数据库需调整驱动)
2. 创建项目并添加依赖
在pom.xml
中添加核心依赖:
<dependencies>
<!-- Spring Boot Starter -->
<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.3.1</version>
</dependency>
<!-- 数据库驱动(以MySQL为例) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Lombok简化代码 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
3. 配置数据源与MyBatis Plus
在application.yml
中配置:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
# MyBatis Plus配置
mybatis-plus:
configuration:
map-underscore-to-camel-case: true # 开启驼峰命名转换
global-config:
db-config:
id-type: auto # 主键生成策略(数据库自增)
mapper-locations: classpath:mapper/*.xml # XML映射文件路径
4. 实体类与Mapper
(1) 实体类(使用Lombok简化):
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
@Data
@TableName("user") // 对应数据库表名
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
(2) Mapper接口:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {
// 继承BaseMapper即拥有CRUD基础方法
}
(3) 启用Mapper扫描: 在启动类添加@MapperScan
注解:
@SpringBootApplication
@MapperScan("com.example.demo.mapper") // 替换为实际Mapper包路径
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
5. Service层与Controller层
(1) Service接口:
public interface UserService extends IService<User> { }
(2) Service实现类:
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>
implements UserService {
}
(3) Controller示例:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public User getById(@PathVariable Long id) {
return userService.getById(id);
}
@PostMapping
public boolean save(@RequestBody User user) {
return userService.save(user);
}
}
6. 高级功能配置
(1) 分页插件:
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor paginationInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
(2) 逻辑删除配置: 在application.yml
中启用:
mybatis-plus:
global-config:
db-config:
logic-delete-field: deleted # 逻辑删除字段名
logic-delete-value: 1 # 删除状态值
logic-not-delete-value: 0 # 未删除状态值
7. 测试验证
使用@SpringBootTest
进行单元测试:
@SpringBootTest
class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
void testSelect() {
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
}
8. 常见问题解决
数据库连接失败:
- 检查
spring.datasource
配置 - 确认MySQL服务已启动
- 添加
&allowPublicKeyRetrieval=true
到URL(MySQL 8.0+)
- 检查
Mapper扫描失败:
- 确认
@MapperScan
路径正确 - 检查Mapper接口是否添加
@Repository
或@Mapper
注解
- 确认
字段映射错误:
- 开启驼峰命名:
map-underscore-to-camel-case: true
- 使用
@TableField
指定字段名:@TableField("user_name") private String name;
- 开启驼峰命名:
通过以上步骤,即可完成Spring Boot 2与MyBatis Plus的整合,快速实现高效数据操作。