From 25f6e3402ba64c72f47fa96f5e2c795beac5683a Mon Sep 17 00:00:00 2001 From: Charles7c Date: Sat, 4 Mar 2023 17:38:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20MyBatis=20Plus=20ChainWrapper=20=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cnadmin/common/base/BaseMapper.java | 62 +++++++++++++++++++ .../cnadmin/common/base/BaseServiceImpl.java | 52 ---------------- .../mybatis/MybatisPlusConfiguration.java | 4 +- .../common/util/helper/QueryHelper.java | 3 +- .../system/service/impl/DeptServiceImpl.java | 5 +- .../system/service/impl/MenuServiceImpl.java | 6 +- .../service/impl/RoleDeptServiceImpl.java | 4 +- .../service/impl/RoleMenuServiceImpl.java | 4 +- .../system/service/impl/RoleServiceImpl.java | 14 +++-- .../service/impl/UserRoleServiceImpl.java | 6 +- .../system/service/impl/UserServiceImpl.java | 20 +++--- 11 files changed, 91 insertions(+), 89 deletions(-) diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseMapper.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseMapper.java index 3a776d83..30e34a7b 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseMapper.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseMapper.java @@ -18,6 +18,12 @@ package top.charles7c.cnadmin.common.base; import java.util.Collection; +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 com.baomidou.mybatisplus.extension.toolkit.Db; /** @@ -40,4 +46,60 @@ public interface BaseMapper extends com.baomidou.mybatisplus.core.mapper.Base default boolean insertBatch(Collection entityList) { return Db.saveBatch(entityList); } + + /** + * 链式查询 + * + * @return QueryWrapper 的包装类 + */ + default QueryChainWrapper query() { + return ChainWrappers.queryChain(this); + } + + /** + * 链式查询(lambda 式) + * + * @return LambdaQueryWrapper 的包装类 + */ + default LambdaQueryChainWrapper lambdaQuery() { + return ChainWrappers.lambdaQueryChain(this, this.currentEntityClass()); + } + + /** + * 链式查询(lambda 式) + * + * @param entity + * 实体对象 + * @return LambdaQueryWrapper 的包装类 + */ + default LambdaQueryChainWrapper lambdaQuery(T entity) { + return ChainWrappers.lambdaQueryChain(this, entity); + } + + /** + * 链式更改 + * + * @return UpdateWrapper 的包装类 + */ + default UpdateChainWrapper update() { + return ChainWrappers.updateChain(this); + } + + /** + * 链式更改(lambda 式) + * + * @return LambdaUpdateWrapper 的包装类 + */ + default LambdaUpdateChainWrapper lambdaUpdate() { + return ChainWrappers.lambdaUpdateChain(this); + } + + /** + * 获取实体类 Class 对象 + * + * @return 实体类 Class 对象 + */ + default Class currentEntityClass() { + return (Class)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapper.class, 0); + } } 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 1f8d77f1..5101f4d6 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 @@ -34,11 +34,6 @@ 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.bean.copier.CopyOptions; @@ -267,53 +262,6 @@ public abstract class BaseServiceImpl, T, V, D, Q, C ext } } - /** - * 链式查询 - * - * @return QueryWrapper 的包装类 - */ - protected QueryChainWrapper query() { - return ChainWrappers.queryChain(baseMapper); - } - - /** - * 链式查询(lambda 式) - * - * @return LambdaQueryWrapper 的包装类 - */ - protected LambdaQueryChainWrapper lambdaQuery() { - return ChainWrappers.lambdaQueryChain(baseMapper, entityClass); - } - - /** - * 链式查询(lambda 式) - * - * @param entity - * 实体对象 - * @return LambdaQueryWrapper 的包装类 - */ - protected LambdaQueryChainWrapper lambdaQuery(T entity) { - return ChainWrappers.lambdaQueryChain(baseMapper, entity); - } - - /** - * 链式更改 - * - * @return UpdateWrapper 的包装类 - */ - protected UpdateChainWrapper update() { - return ChainWrappers.updateChain(baseMapper); - } - - /** - * 链式更改(lambda 式) - * - * @return LambdaUpdateWrapper 的包装类 - */ - protected LambdaUpdateChainWrapper lambdaUpdate() { - return ChainWrappers.lambdaUpdateChain(baseMapper); - } - /** * 获取实体类 ID 名称 * diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/MybatisPlusConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/MybatisPlusConfiguration.java index c90db112..f61faf9f 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/MybatisPlusConfiguration.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/MybatisPlusConfiguration.java @@ -78,9 +78,9 @@ public class MybatisPlusConfiguration { // 对于单一数据库类型来说,都建议配置该值,避免每次分页都去抓取数据库类型 // PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); - // 溢出总页数后是否进行处理 + // 溢出总页数后是否进行处理,默认不处理 paginationInnerInterceptor.setOverflow(false); - // 单页分页条数限制 + // 单页分页条数限制,默认无限制 paginationInnerInterceptor.setMaxLimit(-1L); return paginationInnerInterceptor; } diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java index cb1acbc2..c094b20e 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java @@ -26,7 +26,6 @@ import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -56,7 +55,7 @@ public class QueryHelper { * @return MyBatis Plus 查询条件封装对象 */ public static QueryWrapper build(Q query) { - QueryWrapper queryWrapper = Wrappers.query(); + QueryWrapper queryWrapper = new QueryWrapper<>(); // 没有查询条件,直接返回 if (query == null) { return queryWrapper; 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 8326b75a..139142fa 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 @@ -59,7 +59,6 @@ public class DeptServiceImpl extends BaseServiceImpl isExists, String.format("新增失败,'%s'已存在", deptName)); - // 保存信息 request.setStatus(DisEnableStatusEnum.ENABLE); return super.add(request); } @@ -79,7 +78,7 @@ public class DeptServiceImpl extends BaseServiceImpl ids) { CheckUtils.throwIf(() -> userService.countByDeptIds(ids) > 0, "所选部门存在用户关联,请解除关联后重试"); super.delete(ids); - super.lambdaUpdate().in(DeptDO::getParentId, ids).remove(); + baseMapper.lambdaUpdate().in(DeptDO::getParentId, ids).remove(); } @Override @@ -103,7 +102,7 @@ public class DeptServiceImpl extends BaseServiceImpl isExists, String.format("新增失败,'%s'已存在", menuName)); - // 保存信息 request.setStatus(DisEnableStatusEnum.ENABLE); return super.add(request); } @@ -63,7 +62,6 @@ public class MenuServiceImpl extends BaseServiceImpl isExists, String.format("修改失败,'%s'已存在", menuName)); - // 更新信息 super.update(request); } @@ -71,7 +69,7 @@ public class MenuServiceImpl extends BaseServiceImpl ids) { super.delete(ids); - super.lambdaUpdate().in(MenuDO::getParentId, ids).remove(); + baseMapper.lambdaUpdate().in(MenuDO::getParentId, ids).remove(); } @Override @@ -91,7 +89,7 @@ public class MenuServiceImpl extends BaseServiceImpllambdaQuery().eq(RoleDeptDO::getRoleId, roleId)); + roleDeptMapper.lambdaUpdate().eq(RoleDeptDO::getRoleId, roleId).remove(); // 保存最新关联 List roleDeptList = deptIds.stream().map(deptId -> new RoleDeptDO(roleId, deptId)).collect(Collectors.toList()); diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleMenuServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleMenuServiceImpl.java index a4569627..52b075cb 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleMenuServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleMenuServiceImpl.java @@ -24,8 +24,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; - import cn.hutool.core.collection.CollUtil; import top.charles7c.cnadmin.system.mapper.RoleMenuMapper; @@ -50,7 +48,7 @@ public class RoleMenuServiceImpl implements RoleMenuService { return; } // 删除原有关联 - roleMenuMapper.delete(Wrappers.lambdaQuery().eq(RoleMenuDO::getRoleId, roleId)); + roleMenuMapper.lambdaUpdate().eq(RoleMenuDO::getRoleId, roleId).remove(); // 保存最新关联 List roleMenuList = menuIds.stream().map(menuId -> new RoleMenuDO(roleId, menuId)).collect(Collectors.toList()); 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 d2aa30a9..049fe29f 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 @@ -68,7 +68,7 @@ public class RoleServiceImpl extends BaseServiceImpl this.checkCodeExists(roleCode, request.getRoleId()), String.format("新增失败,'%s'已存在", roleCode)); - // 新增角色 + // 新增信息 request.setStatus(DisEnableStatusEnum.ENABLE); Long roleId = super.add(request); // 保存角色和菜单关联 @@ -88,7 +88,7 @@ public class RoleServiceImpl extends BaseServiceImpl this.checkCodeExists(roleCode, request.getRoleId()), String.format("修改失败,'%s'已存在", roleCode)); - // 更新角色 + // 更新信息 super.update(request); Long roleId = request.getRoleId(); // 保存角色和菜单关联 @@ -131,14 +131,16 @@ public class RoleServiceImpl extends BaseServiceImpl listRoleNamesByRoleIds(List roleIds) { - List roleList = super.lambdaQuery().select(RoleDO::getRoleName).in(RoleDO::getRoleId, roleIds).list(); + List roleList = + baseMapper.lambdaQuery().select(RoleDO::getRoleName).in(RoleDO::getRoleId, roleIds).list(); return roleList.stream().map(RoleDO::getRoleName).collect(Collectors.toList()); } @Override public Set listRoleCodesByUserId(Long userId) { List roleIds = userRoleService.listRoleIdsByUserId(userId); - List roleList = super.lambdaQuery().select(RoleDO::getRoleCode).in(RoleDO::getRoleId, roleIds).list(); + List roleList = + baseMapper.lambdaQuery().select(RoleDO::getRoleCode).in(RoleDO::getRoleId, roleIds).list(); return roleList.stream().map(RoleDO::getRoleCode).collect(Collectors.toSet()); } @@ -152,7 +154,7 @@ public class RoleServiceImpl extends BaseServiceImpllambdaQuery().eq(UserRoleDO::getUserId, userId)); + userRoleMapper.lambdaUpdate().eq(UserRoleDO::getUserId, userId).remove(); // 保存最新关联 List userRoleList = roleIds.stream().map(roleId -> new UserRoleDO(userId, roleId)).collect(Collectors.toList()); @@ -58,7 +56,7 @@ public class UserRoleServiceImpl implements UserRoleService { @Override public Long countByRoleIds(List roleIds) { - return userRoleMapper.selectCount(Wrappers.lambdaQuery().in(UserRoleDO::getRoleId, roleIds)); + return userRoleMapper.lambdaQuery().in(UserRoleDO::getRoleId, roleIds).count(); } @Override diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java index ff14ec61..721342a5 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java @@ -77,10 +77,10 @@ public class UserServiceImpl extends BaseServiceImpl isExists, String.format("新增失败,'%s'已存在", username)); - // 新增用户 + // 新增信息 request.setStatus(DisEnableStatusEnum.ENABLE); Long userId = super.add(request); - super.lambdaUpdate() + baseMapper.lambdaUpdate() .set(UserDO::getPassword, SecureUtils.md5Salt(SysConsts.DEFAULT_PASSWORD, userId.toString())) .set(UserDO::getPwdResetTime, LocalDateTime.now()).eq(UserDO::getUserId, userId).update(); // 保存用户和角色关联 @@ -95,7 +95,7 @@ public class UserServiceImpl extends BaseServiceImpl isExists, String.format("修改失败,'%s'已存在", username)); - // 更新用户 + // 更新信息 super.update(request); Long userId = request.getUserId(); // 保存用户和角色关联 @@ -133,7 +133,7 @@ public class UserServiceImpl extends BaseServiceImpl count > 0, "邮箱已绑定其他账号,请更换其他邮箱"); CheckUtils.throwIfEqual(newEmail, userDO.getEmail(), "新邮箱不能与当前邮箱相同"); // 更新邮箱 - super.lambdaUpdate().set(UserDO::getEmail, newEmail).eq(UserDO::getUserId, userId).update(); + baseMapper.lambdaUpdate().set(UserDO::getEmail, newEmail).eq(UserDO::getUserId, userId).update(); // 更新登录用户信息 LoginUser loginUser = LoginHelper.getLoginUser(); @@ -202,12 +202,12 @@ public class UserServiceImpl extends BaseServiceImpl deptIds) { - return super.lambdaQuery().in(UserDO::getDeptId, deptIds).count(); + return baseMapper.lambdaQuery().in(UserDO::getDeptId, deptIds).count(); } @Override @@ -225,6 +225,6 @@ public class UserServiceImpl extends BaseServiceImpl