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的整合,快速實現高效數據操作。