MyBatisPlus的IService接口实现
作者:需要重新演唱
MyBatis Plus(简称MP)是一个MyBatis的增强工具,旨在简化开发、提高效率。它提供了许多便捷的功能,其中之一就是IService
接口。IService
接口是MyBatis Plus提供的一个服务层接口,封装了常用的CRUD操作,使得开发者可以更加便捷地进行数据库操作。本文将详细讲解IService
接口,包括其基本概念、常用方法以及实际应用场景。
1. 基本概念
IService
接口是MyBatis Plus提供的一个服务层接口,定义了一系列常用的CRUD操作方法。通过实现IService
接口,可以快速构建服务层,简化开发流程。
1.1 接口定义
IService
接口定义如下:
public interface IService<T> { // 插入一条记录(选择字段,策略插入) boolean save(T entity); // 插入(批量) boolean saveBatch(Collection<T> entityList); // 插入(批量) boolean saveBatch(Collection<T> entityList, int batchSize); // 根据 ID 删除 boolean removeById(Serializable id); // 根据实体(ID)删除 boolean removeById(T entity); // 根据 columnMap 条件,删除记录 boolean removeByMap(Map<String, Object> columnMap); // 根据 entity 条件,删除记录 boolean remove(Wrapper<T> queryWrapper); // 删除(根据ID 批量删除) boolean removeByIds(Collection<? extends Serializable> idList); // 根据 ID 选择修改 boolean updateById(T entity); // 根据 whereEntity 条件,更新记录 boolean update(T entity, Wrapper<T> updateWrapper); // 根据 ID 查询 T getById(Serializable id); // 查询(根据ID 批量查询) List<T> listByIds(Collection<? extends Serializable> idList); // 查询(根据 columnMap 条件) List<T> listByMap(Map<String, Object> columnMap); // 根据 entity 条件,查询一条记录 T getOne(Wrapper<T> queryWrapper); // 根据 Wrapper 条件,查询全部记录 List<T> list(Wrapper<T> queryWrapper); // 查询所有 List<T> list(); // 查询总记录数 int count(); // 查询总记录数 int count(Wrapper<T> queryWrapper); // 查询所有列表 List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper); // 查询所有列表 List<Map<String, Object>> listMaps(); // 查询全部记录 List<Object> listObjs(); // 查询全部记录 <V> List<V> listObjs(Function<? super Object, V> mapper); // 根据 Wrapper 条件,查询全部记录 List<Object> listObjs(Wrapper<T> queryWrapper); // 根据 Wrapper 条件,查询全部记录 <V> List<V> listObjs(Wrapper<T> queryWrapper, Function<? super Object, V> mapper); // 无条件分页查询 IPage<T> page(IPage<T> page); // 条件分页查询 IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper); // 无条件分页查询 IPage<Map<String, Object>> pageMaps(IPage<T> page); // 条件分页查询 IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper); }
1.2 实现类
为了使用IService
接口,通常需要创建一个实现类,继承ServiceImpl
类,并实现IService
接口。ServiceImpl
类是MyBatis Plus提供的一个默认实现类,封装了常用的CRUD操作。
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IService<User> { // 自定义方法 }
在上述代码中,UserServiceImpl
继承了ServiceImpl
类,并实现了IService<User>
接口。ServiceImpl
类的构造函数需要传入Mapper接口和实体类。
2. 常用方法
2.1 插入操作
- save:插入一条记录(选择字段,策略插入)
- saveBatch:插入(批量)
User user = new User(); user.setName("John"); user.setAge(25); userService.save(user); List<User> userList = new ArrayList<>(); userList.add(new User("John", 25, "john@example.com")); userList.add(new User("Jane", 30, "jane@example.com")); userService.saveBatch(userList);
2.2 删除操作
- removeById:根据ID删除
- removeByMap:根据columnMap条件删除
- remove:根据entity条件删除
- removeByIds:根据ID批量删除
userService.removeById(1); Map<String, Object> columnMap = new HashMap<>(); columnMap.put("age", 25); userService.removeByMap(columnMap); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("age", 25); userService.remove(queryWrapper); List<Integer> idList = Arrays.asList(1, 2, 3); userService.removeByIds(idList);
2.3 更新操作
- updateById:根据ID更新
- update:根据whereEntity条件更新
User user = new User(); user.setId(1); user.setName("John Doe"); user.setAge(26); userService.updateById(user); User user = new User(); user.setStatus(1); QueryWrapper<User> updateWrapper = new QueryWrapper<>(); updateWrapper.eq("age", 25); userService.update(user, updateWrapper);
2.4 查询操作
- getById:根据ID查询
- listByIds:根据ID批量查询
- listByMap:根据columnMap条件查询
- getOne:根据entity条件查询一条记录
- list:根据Wrapper条件查询全部记录
- list:查询所有
- count:查询总记录数
- page:无条件分页查询
- page:条件分页查询
User user = userService.getById(1); List<Integer> idList = Arrays.asList(1, 2, 3); List<User> userList = userService.listByIds(idList); Map<String, Object> columnMap = new HashMap<>(); columnMap.put("age", 25); List<User> userList = userService.listByMap(columnMap); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("age", 25); User user = userService.getOne(queryWrapper); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("age", 25); List<User> userList = userService.list(queryWrapper); List<User> userList = userService.list(); int count = userService.count(); Page<User> page = new Page<>(1, 10); IPage<User> userPage = userService.page(page); Page<User> page = new Page<>(1, 10); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("age", 25); IPage<User> userPage = userService.page(page, queryWrapper);
3. 实际应用场景
3.1 用户管理
假设我们有一个用户管理系统,需要对用户进行增删改查操作。通过IService
接口,可以轻松实现这些功能。
@Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IService<User> { // 自定义方法 public User getUserByName(String name) { QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", name); return getOne(queryWrapper); } }
在上述代码中,我们定义了一个自定义方法getUserByName
,根据用户名查询用户信息。
3.2 订单管理
假设我们有一个订单管理系统,需要对订单进行增删改查操作。通过IService
接口,可以轻松实现这些功能。
@Service public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IService<Order> { // 自定义方法 public List<Order> getOrdersByUserId(int userId) { QueryWrapper<Order> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id", userId); return list(queryWrapper); } }
在上述代码中,我们定义了一个自定义方法getOrdersByUserId
,根据用户ID查询订单信息。
4. 总结
MyBatis Plus的IService
接口提供了一系列常用的CRUD操作方法,使得开发者可以更加便捷地进行数据库操作。通过实现IService
接口,并继承ServiceImpl
类,可以快速构建服务层,简化开发流程。在实际应用中,结合自定义方法,可以进一步提高开发效率和代码可维护性。
到此这篇关于MyBatisPlus的IService接口实现的文章就介绍到这了,更多相关MyBatisPlus IService接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!