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=UTCusername: rootpassword: 123456driver-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 {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User getById(@PathVariable Long id) {return userService.getById(id);}@PostMappingpublic boolean save(@RequestBody User user) {return userService.save(user);}
}
6. 高级功能配置
(1) 分页插件:
@Configuration
public class MyBatisPlusConfig {@Beanpublic 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 {@Autowiredprivate UserMapper userMapper;@Testvoid 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的整合,快速实现高效数据操作。