Spring Boot整合MyBatis-Plus實(shí)現(xiàn)CRUD操作的示例代碼
本文將演示如何在Spring Boot項(xiàng)目中整合MyBatis-Plus框架,快速實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪改查操作。相較于原生MyBatis,MyBatis-Plus提供了更簡(jiǎn)潔的API和自動(dòng)化功能。
環(huán)境準(zhǔn)備
- JDK 1.8+
- MySQL 5.7+
- Spring Boot 2.7.x
- MyBatis-Plus 3.5.x
實(shí)現(xiàn)步驟
1. 創(chuàng)建項(xiàng)目并添加依賴(lài)
通過(guò)Spring Initializr創(chuàng)建項(xiàng)目時(shí)勾選:
- Spring Web
- MySQL Driver
手動(dòng)添加MyBatis-Plus依賴(lài)(pom.xml
):
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency>
2. 配置數(shù)據(jù)庫(kù)連接(application.yml)
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mp_demo?useSSL=false&serverTimezone=Asia/Shanghai username: root password: 123456 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 開(kāi)啟SQL日志 global-config: db-config: id-type: assign_id # 主鍵生成策略(使用雪花算法)
3. 創(chuàng)建實(shí)體類(lèi)
@Data @TableName("t_user") // 指定表名 public class User { @TableId(type = IdType.ASSIGN_ID) // 雪花算法生成ID private Long id; private String username; private Integer age; private String email; }
4. 創(chuàng)建Mapper接口
@Mapper public interface UserMapper extends BaseMapper<User> { // 繼承BaseMapper后已包含基礎(chǔ)CRUD方法 }
5. 實(shí)現(xiàn)Service層(可選增強(qiáng))
@Service public class UserService { @Autowired private UserMapper userMapper; // 插入 public int addUser(User user) { return userMapper.insert(user); } // 查詢(xún)?nèi)? public List<User> getAllUsers() { return userMapper.selectList(null); } // 條件查詢(xún) public User getUserById(Long id) { return userMapper.selectById(id); } // 更新 public int updateUser(User user) { return userMapper.updateById(user); } // 刪除 public int deleteUser(Long id) { return userMapper.deleteById(id); } }
6. 添加分頁(yè)插件配置
@Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }
7. 創(chuàng)建Controller
@RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @PostMapping public String add(@RequestBody User user) { userService.addUser(user); return "插入成功"; } @GetMapping("/{id}") public User getById(@PathVariable Long id) { return userService.getUserById(id); } @GetMapping("/list") public List<User> list() { return userService.getAllUsers(); } @PutMapping public String update(@RequestBody User user) { userService.updateUser(user); return "更新成功"; } @DeleteMapping("/{id}") public String delete(@PathVariable Long id) { userService.deleteUser(id); return "刪除成功"; } }
測(cè)試示例
插入數(shù)據(jù)(POST /user)
{ "username": "張三", "age": 25, "email": "zhangsan@example.com" }
分頁(yè)查詢(xún)(需自定義方法)
// 在Mapper中添加: @Select("SELECT * FROM t_user WHERE age > #{age}") Page<User> selectPageByAge(Page<User> page, @Param("age") Integer age); // Controller調(diào)用: @GetMapping("/page") public Page<User> page(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize) { Page<User> page = new Page<>(pageNum, pageSize); return userMapper.selectPage(page, null); }
關(guān)鍵特性說(shuō)明
自動(dòng)生成SQL:無(wú)需編寫(xiě)XML文件,基礎(chǔ)CRUD自動(dòng)實(shí)現(xiàn)
主鍵策略:支持AUTO
(數(shù)據(jù)庫(kù)自增)、ASSIGN_ID
(雪花算法)、UUID
等
條件構(gòu)造器:通過(guò)QueryWrapper
構(gòu)建復(fù)雜查詢(xún)條件
QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.like("username", "張").lt("age", 30); userMapper.selectList(wrapper);
常見(jiàn)問(wèn)題排查
啟動(dòng)時(shí)報(bào)錯(cuò)找不到Mapper
- 確保啟動(dòng)類(lèi)添加
@MapperScan("com.example.mapper")
- 檢查Mapper接口是否標(biāo)注
@Mapper
注解
字段映射失敗
- 檢查數(shù)據(jù)庫(kù)字段名是否符合駝峰轉(zhuǎn)下劃線規(guī)則
- 使用
@TableField(value = "db_column")
指定字段映射
分頁(yè)失效
- 確認(rèn)已添加分頁(yè)插件配置
- 查詢(xún)方法參數(shù)必須為
Page
對(duì)象
擴(kuò)展建議
- 使用代碼生成器快速生成Entity/Mapper/Service代碼
- 結(jié)合
LambdaQueryWrapper
實(shí)現(xiàn)類(lèi)型安全的查詢(xún)條件 - 通過(guò)
@Version
實(shí)現(xiàn)樂(lè)觀鎖功能
到此這篇關(guān)于Spring Boot整合MyBatis-Plus實(shí)現(xiàn)CRUD操作的示例代碼的文章就介紹到這了,更多相關(guān)SpringBoot MyBatis-Plus實(shí)現(xiàn)CRUD操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot使用MyBatis實(shí)現(xiàn)數(shù)據(jù)的CRUD
- SpringBoot整合MyBatis實(shí)現(xiàn)CRUD操作項(xiàng)目實(shí)踐
- SpringBoot整合MyBatis Plus實(shí)現(xiàn)基本CRUD與高級(jí)功能
- SpringBoot之整合MyBatis實(shí)現(xiàn)CRUD方式
- SpringBoot整合Mybatis Plus實(shí)現(xiàn)基本CRUD的示例代碼
- springboot+mybatis-plus實(shí)現(xiàn)內(nèi)置的CRUD使用詳解
- SpringBoot+Mybatis+Vue 實(shí)現(xiàn)商品模塊的crud操作
- 詳解springboot+mybatis-plue實(shí)現(xiàn)內(nèi)置的CRUD使用詳情
- SpringBoot整合Mybatis實(shí)現(xiàn)CRUD
相關(guān)文章
MybatisPlus自帶的queryWrapper實(shí)現(xiàn)時(shí)間倒序方式
這篇文章主要介紹了MybatisPlus自帶的queryWrapper實(shí)現(xiàn)時(shí)間倒序方式,具有很好的參考價(jià)值,希望對(duì)的有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01java中url漢字編碼互相轉(zhuǎn)換實(shí)例
這篇文章介紹了java中url漢字編碼互相轉(zhuǎn)換實(shí)例,有需要的朋友可以參考一下2013-10-10springboot之SpringApplication生命周期和事件機(jī)制解讀
這篇文章主要介紹了springboot之SpringApplication生命周期和事件機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06java實(shí)現(xiàn)文件夾上傳功能實(shí)例代碼(SpringBoot框架)
在web項(xiàng)目中上傳文件夾現(xiàn)在已經(jīng)成為了一個(gè)主流的需求,下面這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)文件夾上傳功能(springBoot框架)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04Java創(chuàng)建樹(shù)形結(jié)構(gòu)算法實(shí)例代碼
本篇文章主要介紹了Java創(chuàng)建樹(shù)形結(jié)構(gòu)算法實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01利用Java設(shè)置Word文本框中的文字旋轉(zhuǎn)方向的實(shí)現(xiàn)方法
Word文檔中可添加文本框,并設(shè)置文本框?yàn)闄M向文本排列或是縱向文本排列,或者設(shè)置文本框中的文字旋轉(zhuǎn)方向等.通過(guò)Java程序代碼,也可以實(shí)現(xiàn)以上文本框的操作.下面以Java代碼示例展示具體的實(shí)現(xiàn)步驟.另外,可參考C#及VB.NET代碼的實(shí)現(xiàn)方法,需要的朋友可以參考下2021-06-06Java8實(shí)現(xiàn)FTP及SFTP文件上傳下載
這篇文章主要介紹了Java8實(shí)現(xiàn)FTP及SFTP文件上傳下載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09spring boot + mybatis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)的讀寫(xiě)分離
這篇文章主要給大家介紹了關(guān)于spring boot + mybatis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)的讀寫(xiě)分離的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Struts1教程之ActionMapping_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Struts1教程之ActionMapping,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09springboot 多數(shù)據(jù)源的實(shí)現(xiàn)(最簡(jiǎn)單的整合方式)
這篇文章主要介紹了springboot 多數(shù)據(jù)源的實(shí)現(xiàn)(最簡(jiǎn)單的整合方式),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11