提交 1319cb32 编写于 作者: 查尔斯-BUG万象集's avatar 查尔斯-BUG万象集

优化:使用 MyBatis Plus ChainWrapper 优化部分 QueryWrapper 的写法

上级 56449263
...@@ -32,6 +32,11 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo; ...@@ -32,6 +32,11 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.ReflectionKit; 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.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
...@@ -246,4 +251,51 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T, V, D, Q, C ext ...@@ -246,4 +251,51 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T, V, D, Q, C ext
protected Class<D> currentDetailVoClass() { protected Class<D> currentDetailVoClass() {
return (Class<D>)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 3); 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);
}
} }
...@@ -26,8 +26,6 @@ import lombok.RequiredArgsConstructor; ...@@ -26,8 +26,6 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
...@@ -62,8 +60,8 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, ...@@ -62,8 +60,8 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO,
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long create(DeptRequest request) { public Long create(DeptRequest request) {
String deptName = request.getDeptName(); String deptName = request.getDeptName();
boolean isExist = this.checkNameExist(deptName, request.getParentId(), request.getDeptId()); boolean isExists = this.checkNameExists(deptName, request.getParentId(), request.getDeptId());
CheckUtils.throwIf(() -> isExist, String.format("新增失败,'%s'已存在", deptName)); CheckUtils.throwIf(() -> isExists, String.format("新增失败,'%s'已存在", deptName));
// 保存信息 // 保存信息
request.setStatus(DisEnableStatusEnum.ENABLE); request.setStatus(DisEnableStatusEnum.ENABLE);
...@@ -74,8 +72,8 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, ...@@ -74,8 +72,8 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO,
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(DeptRequest request) { public void update(DeptRequest request) {
String deptName = request.getDeptName(); String deptName = request.getDeptName();
boolean isExist = this.checkNameExist(deptName, request.getParentId(), request.getDeptId()); boolean isExists = this.checkNameExists(deptName, request.getParentId(), request.getDeptId());
CheckUtils.throwIf(() -> isExist, String.format("新增失败,'%s'已存在", deptName)); CheckUtils.throwIf(() -> isExists, String.format("修改失败,'%s'已存在", deptName));
super.update(request); super.update(request);
} }
...@@ -85,7 +83,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, ...@@ -85,7 +83,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO,
public void delete(List<Long> ids) { public void delete(List<Long> ids) {
CheckUtils.throwIf(() -> userService.countByDeptIds(ids) > 0, "所选部门存在用户关联,请解除关联后重试"); CheckUtils.throwIf(() -> userService.countByDeptIds(ids) > 0, "所选部门存在用户关联,请解除关联后重试");
super.delete(ids); super.delete(ids);
baseMapper.delete(Wrappers.<DeptDO>lambdaQuery().in(DeptDO::getParentId, ids)); super.lambdaUpdate().in(DeptDO::getParentId, ids).remove();
} }
@Override @Override
...@@ -109,18 +107,18 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, ...@@ -109,18 +107,18 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO,
*/ */
private List<DeptVO> deDuplication(List<DeptVO> list) { private List<DeptVO> deDuplication(List<DeptVO> list) {
List<DeptVO> deDuplicationList = new ArrayList<>(); List<DeptVO> deDuplicationList = new ArrayList<>();
for (DeptVO outerDept : list) { for (DeptVO outer : list) {
boolean flag = true; 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; flag = false;
break; break;
} }
} }
if (flag) { if (flag) {
deDuplicationList.add(outerDept); deDuplicationList.add(outer);
} }
} }
return deDuplicationList; return deDuplicationList;
...@@ -153,17 +151,17 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, ...@@ -153,17 +151,17 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO,
/** /**
* 检查名称是否存在 * 检查名称是否存在
* *
* @param deptName * @param name
* 部门名称 * 名称
* @param parentId * @param parentId
* 上级部门 ID * 上级 ID
* @param deptId * @param id
* 部门 ID * ID
* @return 是否存在 * @return 是否存在
*/ */
private boolean checkNameExist(String deptName, Long parentId, Long deptId) { private boolean checkNameExists(String name, Long parentId, Long id) {
return baseMapper.exists(Wrappers.<DeptDO>lambdaQuery().eq(DeptDO::getDeptName, deptName) return super.lambdaQuery().eq(DeptDO::getDeptName, name).eq(DeptDO::getParentId, parentId)
.eq(DeptDO::getParentId, parentId).ne(deptId != null, DeptDO::getDeptId, deptId)); .ne(id != null, DeptDO::getDeptId, id).exists();
} }
@Override @Override
......
...@@ -23,8 +23,6 @@ import lombok.RequiredArgsConstructor; ...@@ -23,8 +23,6 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; 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.base.BaseServiceImpl;
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
import top.charles7c.cnadmin.common.util.validate.CheckUtils; import top.charles7c.cnadmin.common.util.validate.CheckUtils;
...@@ -54,7 +52,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, ...@@ -54,7 +52,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO,
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long create(RoleRequest request) { public Long create(RoleRequest request) {
String roleName = request.getRoleName(); 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)); CheckUtils.throwIf(() -> isExist, String.format("新增失败,'%s'已存在", roleName));
// 保存信息 // 保存信息
...@@ -66,7 +64,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, ...@@ -66,7 +64,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO,
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(RoleRequest request) { public void update(RoleRequest request) {
String roleName = request.getRoleName(); 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)); CheckUtils.throwIf(() -> isExist, String.format("修改失败,'%s'已存在", roleName));
super.update(request); super.update(request);
...@@ -82,14 +80,13 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, ...@@ -82,14 +80,13 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO,
/** /**
* 检查名称是否存在 * 检查名称是否存在
* *
* @param roleName * @param name
* 角色名称 * 名称
* @param roleId * @param id
* 角色 ID * ID
* @return 是否存在 * @return 是否存在
*/ */
private boolean checkNameExist(String roleName, Long roleId) { private boolean checkNameExists(String name, Long id) {
return baseMapper.exists(Wrappers.<RoleDO>lambdaQuery().eq(RoleDO::getRoleName, roleName).ne(roleId != null, return super.lambdaQuery().eq(RoleDO::getRoleName, name).ne(id != null, RoleDO::getRoleId, id).exists();
RoleDO::getRoleId, roleId));
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册