From 1319cb3264c5e93d2b668429a18165df279c556d Mon Sep 17 00:00:00 2001 From: Charles7c <charles7c@126.com> Date: Thu, 16 Feb 2023 21:00:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20MyBatis=20Plus=20ChainWrapper=20=E4=BC=98=E5=8C=96=E9=83=A8?= =?UTF-8?q?=E5=88=86=20QueryWrapper=20=E7=9A=84=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cnadmin/common/base/BaseServiceImpl.java | 52 +++++++++++++++++++ .../system/service/impl/DeptServiceImpl.java | 36 ++++++------- .../system/service/impl/RoleServiceImpl.java | 19 +++---- 3 files changed, 77 insertions(+), 30 deletions(-) diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseServiceImpl.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseServiceImpl.java index 1fb32e5e..0cf9293f 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseServiceImpl.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseServiceImpl.java @@ -32,6 +32,11 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.ReflectionKit; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; +import com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper; +import com.baomidou.mybatisplus.extension.toolkit.ChainWrappers; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; @@ -246,4 +251,51 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T, V, D, Q, C ext protected Class<D> currentDetailVoClass() { return (Class<D>)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 3); } + + /** + * 链式查询 + * + * @return QueryWrapper 的包装类 + */ + protected QueryChainWrapper<T> query() { + return ChainWrappers.queryChain(baseMapper); + } + + /** + * 链式查询(lambda 式) + * + * @return LambdaQueryWrapper 的包装类 + */ + protected LambdaQueryChainWrapper<T> lambdaQuery() { + return ChainWrappers.lambdaQueryChain(baseMapper, entityClass); + } + + /** + * 链式查询(lambda 式) + * + * @param entity + * 实体对象 + * @return LambdaQueryWrapper 的包装类 + */ + protected LambdaQueryChainWrapper<T> lambdaQuery(T entity) { + return ChainWrappers.lambdaQueryChain(baseMapper, entity); + } + + /** + * 链式更改 + * + * @return UpdateWrapper 的包装类 + */ + protected UpdateChainWrapper<T> update() { + return ChainWrappers.updateChain(baseMapper); + } + + /** + * 链式更改(lambda 式) + * + * @return LambdaUpdateWrapper 的包装类 + */ + protected LambdaUpdateChainWrapper<T> lambdaUpdate() { + return ChainWrappers.lambdaUpdateChain(baseMapper); + } } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java index 6b7576cb..75dc4d86 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java @@ -26,8 +26,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; - import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.tree.Tree; @@ -62,8 +60,8 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, @Transactional(rollbackFor = Exception.class) public Long create(DeptRequest request) { String deptName = request.getDeptName(); - boolean isExist = this.checkNameExist(deptName, request.getParentId(), request.getDeptId()); - CheckUtils.throwIf(() -> isExist, String.format("新增失败,'%s'已存在", deptName)); + boolean isExists = this.checkNameExists(deptName, request.getParentId(), request.getDeptId()); + CheckUtils.throwIf(() -> isExists, String.format("新增失败,'%s'已存在", deptName)); // 保存信息 request.setStatus(DisEnableStatusEnum.ENABLE); @@ -74,8 +72,8 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, @Transactional(rollbackFor = Exception.class) public void update(DeptRequest request) { String deptName = request.getDeptName(); - boolean isExist = this.checkNameExist(deptName, request.getParentId(), request.getDeptId()); - CheckUtils.throwIf(() -> isExist, String.format("新增失败,'%s'已存在", deptName)); + boolean isExists = this.checkNameExists(deptName, request.getParentId(), request.getDeptId()); + CheckUtils.throwIf(() -> isExists, String.format("修改失败,'%s'已存在", deptName)); super.update(request); } @@ -85,7 +83,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, public void delete(List<Long> ids) { CheckUtils.throwIf(() -> userService.countByDeptIds(ids) > 0, "所选部门存在用户关联,请解除关联后重试"); super.delete(ids); - baseMapper.delete(Wrappers.<DeptDO>lambdaQuery().in(DeptDO::getParentId, ids)); + super.lambdaUpdate().in(DeptDO::getParentId, ids).remove(); } @Override @@ -109,18 +107,18 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, */ private List<DeptVO> deDuplication(List<DeptVO> list) { List<DeptVO> deDuplicationList = new ArrayList<>(); - for (DeptVO outerDept : list) { + for (DeptVO outer : list) { boolean flag = true; - for (DeptVO innerDept : list) { + for (DeptVO inner : list) { // 忽略重复子列表 - if (innerDept.getDeptId().equals(outerDept.getParentId())) { + if (inner.getDeptId().equals(outer.getParentId())) { flag = false; break; } } if (flag) { - deDuplicationList.add(outerDept); + deDuplicationList.add(outer); } } return deDuplicationList; @@ -153,17 +151,17 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, /** * 检查名称是否存在 * - * @param deptName - * 部门名称 + * @param name + * 名称 * @param parentId - * 上级部门 ID - * @param deptId - * 部门 ID + * 上级 ID + * @param id + * ID * @return 是否存在 */ - private boolean checkNameExist(String deptName, Long parentId, Long deptId) { - return baseMapper.exists(Wrappers.<DeptDO>lambdaQuery().eq(DeptDO::getDeptName, deptName) - .eq(DeptDO::getParentId, parentId).ne(deptId != null, DeptDO::getDeptId, deptId)); + private boolean checkNameExists(String name, Long parentId, Long id) { + return super.lambdaQuery().eq(DeptDO::getDeptName, name).eq(DeptDO::getParentId, parentId) + .ne(id != null, DeptDO::getDeptId, id).exists(); } @Override diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java index 412ae743..ccdf13eb 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java @@ -23,8 +23,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; - import top.charles7c.cnadmin.common.base.BaseServiceImpl; import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; import top.charles7c.cnadmin.common.util.validate.CheckUtils; @@ -54,7 +52,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, @Transactional(rollbackFor = Exception.class) public Long create(RoleRequest request) { String roleName = request.getRoleName(); - boolean isExist = this.checkNameExist(roleName, request.getRoleId()); + boolean isExist = this.checkNameExists(roleName, request.getRoleId()); CheckUtils.throwIf(() -> isExist, String.format("新增失败,'%s'已存在", roleName)); // 保存信息 @@ -66,7 +64,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, @Transactional(rollbackFor = Exception.class) public void update(RoleRequest request) { String roleName = request.getRoleName(); - boolean isExist = this.checkNameExist(roleName, request.getRoleId()); + boolean isExist = this.checkNameExists(roleName, request.getRoleId()); CheckUtils.throwIf(() -> isExist, String.format("修改失败,'%s'已存在", roleName)); super.update(request); @@ -82,14 +80,13 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, /** * 检查名称是否存在 * - * @param roleName - * 角色名称 - * @param roleId - * 角色 ID + * @param name + * 名称 + * @param id + * ID * @return 是否存在 */ - private boolean checkNameExist(String roleName, Long roleId) { - return baseMapper.exists(Wrappers.<RoleDO>lambdaQuery().eq(RoleDO::getRoleName, roleName).ne(roleId != null, - RoleDO::getRoleId, roleId)); + private boolean checkNameExists(String name, Long id) { + return super.lambdaQuery().eq(RoleDO::getRoleName, name).ne(id != null, RoleDO::getRoleId, id).exists(); } }