织梦网站安装教程视频教程,舞台搭建制作公司,正规软件开发培训班,学室内设计学费大概要多少钱引言
在开发 Java Web 应用程序时#xff0c;我们经常需要进行大量的数据库操作#xff0c;如创建、读取、更新和删除#xff08;CRUD#xff09;。MyBatis-Plus 作为一个强大的 MyBatis 增强工具#xff0c;为我们提供了通用 Service 接口#xff0c;极大地简化了这些操…引言
在开发 Java Web 应用程序时我们经常需要进行大量的数据库操作如创建、读取、更新和删除CRUD。MyBatis-Plus 作为一个强大的 MyBatis 增强工具为我们提供了通用 Service 接口极大地简化了这些操作。本文将详细介绍 MyBatis-Plus 通用 Service 的使用结合具体代码示例帮助大家更好地理解和应用。
1. 通用 Service 概述
MyBatis-Plus 的通用 Service CRUD 封装了IService接口通过采用get查询单行、remove删除、list查询集合、page分页等前缀命名方式进一步封装了 CRUD 操作避免了 Mapper 层的混淆。同时泛型T可以是任意实体对象使得该接口具有很高的通用性。 如果我们在项目中可能存在自定义通用 Service 方法的需求建议创建自己的IBaseService继承 MyBatis-Plus 提供的基类。官方文档地址为[https://baomidou.com/pages/49cc81/#service-crud-接口](https://baomidou.com/pages/49cc81/#service-crud-%E6%8E%A5%E5%8F% A3)
2. 项目环境搭建
在开始之前我们需要确保项目中已经引入了 MyBatis-Plus 的依赖。以 Maven 为例在pom.xml中添加以下依赖
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion最新版本号/version
/dependency 3. 代码示例
3.1 定义实体类
首先我们需要定义一个实体类User用于表示数据库中的用户表。 package com.qcby.entity;import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;Data
TableName(user)
public class User {private Long id;private String name;private Integer age;private String email;
} 3.2 定义 Service 接口
接下来我们定义一个UserService接口继承自IServiceUser。 package com.qcby.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.qcby.entity.User;public interface UserService extends IServiceUser {
}
3.3 实现 Service 接口
然后我们实现UserService接口。
package com.qcby.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qcby.entity.User;
import com.qcby.mapper.UserMapper;
import com.qcby.service.UserService;
import org.springframework.stereotype.Service;Service
public class UserServiceImpl extends ServiceImplUserMapper, User implements UserService {
} 3.4 测试 Service 方法
为了验证通用 Service 的功能我们编写一些测试用例。
package com.qcby;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qcby.entity.User;
import com.qcby.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;SpringBootTest
public class MybatisPlusServiceTest {Autowiredprivate UserService userService;/*** 保存单个用户*/Testpublic void savetest(){User user new User();user.setName(xiaoming);userService.save(user);System.out.println(user.getId());}/*** 批量保存用户*/Testpublic void saveBatchTest(){ListUser userList new ArrayList();User user1 new User();user1.setName(xiaobai);userList.add(user1);User user2 new User();user2.setName(xiaoli);userList.add(user2);userService.saveBatch(userList);System.out.println(userList.size());}/*** 根据ID删除用户*/Testpublic void removeById(){userService.removeById(1949020695920902146L);}/*** 根据条件删除用户*/Testpublic void remove(){QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.gt(id,6l);userService.remove(queryWrapper);}/*** 根据ID更新用户信息*/Testpublic void updateById(){User user new User();user.setId(1949019913414877186l);user.setName(xiaoming);user.setEmail(xiongdaqcby.com);user.setAge(18);userService.updateById(user);}/*** 根据ID查询用户信息*/Testpublic void getById(){userService.getById(1949020696017371138L);}/*** 查询用户列表*/Testpublic void list(){QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.gt(id,5l);ListUser list userService.list(queryWrapper);System.out.println(list);}/*** 分页查询用户信息*/Testpublic void pageNavigation() {// 创建分页对象查询第1页每页5条PageUser page new Page(1, 5);// 执行分页查询PageUser resultPage userService.page(page);// 打印分页信息System.out.println(当前页: resultPage.getCurrent());System.out.println(每页大小: resultPage.getSize());System.out.println(总记录数: resultPage.getTotal());System.out.println(总页数: resultPage.getPages());System.out.println(当前页数据: resultPage.getRecords());int i 2;while(resultPage.hasNext()){System.out.println(\n 查询下一页 );page.setCurrent(i); // 设置为第i页PageUser nextPage userService.page(page);System.out.println(当前页: nextPage.getCurrent());System.out.println(当前页数据: nextPage.getRecords());i;}}
}
4. 代码解释
4.1 保存操作
save方法用于保存单个实体对象。saveBatch方法用于批量保存实体对象。
4.2 删除操作
removeById方法根据 ID 删除实体对象。remove方法根据条件删除实体对象。
4.3 更新操作
updateById方法根据 ID 更新实体对象的信息。
4.4 查询操作
getById方法根据 ID 查询单个实体对象。list方法根据条件查询实体对象列表。page方法用于分页查询实体对象。