From 7a5d6b472319cbdb6b9e9ee3021d47b5dbe20709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 15 May 2026 11:39:20 +0800 Subject: [PATCH] =?UTF-8?q?[=E9=87=8D=E5=A4=A7=E6=9B=B4=E6=96=B0]=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0mybatis-plus=E6=89=A9=E5=B1=95=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=20=E5=A4=A7=E5=B9=85=E7=AE=80=E5=8C=96=E6=95=B4?= =?UTF-8?q?=E4=BD=93=E4=B8=9A=E5=8A=A1=E4=BB=A3=E7=A0=81=E5=86=99=E6=B3=95?= =?UTF-8?q?=20=E4=BC=98=E9=9B=85=E8=88=92=E9=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/service/SysRegisterService.java | 6 +- .../web/service/impl/EmailAuthStrategy.java | 5 +- .../service/impl/PasswordAuthStrategy.java | 5 +- .../web/service/impl/SmsAuthStrategy.java | 5 +- .../mybatis/core/mapper/BaseMapperPlus.java | 20 + .../core/mapper/LambdaCrudChainWrapper.java | 399 +++++++++++++++++ .../core/query/LambdaQueryBuilder.java | 422 ++++++++++++++++++ .../core/query/LambdaQueryCondition.java | 146 ++++++ .../mybatis/core/query/QueryBuilder.java | 19 + .../demo/controller/TestBatchController.java | 8 +- .../gen/service/GenTableServiceImpl.java | 15 +- .../resources/vm/java/serviceImpl.java.vm | 64 ++- .../dromara/system/mapper/SysDeptMapper.java | 9 +- .../system/mapper/SysDictDataMapper.java | 9 +- .../dromara/system/mapper/SysMenuMapper.java | 7 +- .../dromara/system/mapper/SysPostMapper.java | 3 +- .../dromara/system/mapper/SysRoleMapper.java | 3 +- .../system/mapper/SysRoleMenuMapper.java | 3 +- .../dromara/system/mapper/SysUserMapper.java | 3 +- .../system/mapper/SysUserRoleMapper.java | 9 +- .../service/impl/SysClientServiceImpl.java | 32 +- .../service/impl/SysConfigServiceImpl.java | 30 +- .../service/impl/SysDataScopeServiceImpl.java | 9 +- .../service/impl/SysDeptServiceImpl.java | 80 ++-- .../service/impl/SysDictDataServiceImpl.java | 30 +- .../service/impl/SysDictTypeServiceImpl.java | 28 +- .../service/impl/SysLoginInfoServiceImpl.java | 35 +- .../service/impl/SysMenuServiceImpl.java | 44 +- .../service/impl/SysMessageServiceImpl.java | 30 +- .../service/impl/SysNoticeServiceImpl.java | 16 +- .../service/impl/SysOperLogServiceImpl.java | 30 +- .../service/impl/SysOssConfigServiceImpl.java | 37 +- .../service/impl/SysOssServiceImpl.java | 23 +- .../service/impl/SysPostServiceImpl.java | 49 +- .../service/impl/SysRoleServiceImpl.java | 79 ++-- .../service/impl/SysSocialServiceImpl.java | 17 +- .../service/impl/SysUserServiceImpl.java | 165 +++---- .../workflow/mapper/FlwCategoryMapper.java | 7 +- .../mapper/FlwInstanceBizExtMapper.java | 12 +- .../service/impl/FlwCategoryServiceImpl.java | 25 +- .../impl/FlwDefinitionServiceImpl.java | 4 +- .../service/impl/FlwInstanceServiceImpl.java | 24 +- .../service/impl/FlwSpelServiceImpl.java | 15 +- .../service/impl/FlwTaskServiceImpl.java | 37 +- 44 files changed, 1535 insertions(+), 483 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/LambdaCrudChainWrapper.java create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaQueryBuilder.java create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaQueryCondition.java create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/QueryBuilder.java diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java index 744b0f8d6..b6ccca1a4 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java @@ -1,7 +1,6 @@ package org.dromara.web.service; import cn.hutool.crypto.digest.BCrypt; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.Constants; import org.dromara.common.core.constant.GlobalConstants; @@ -58,8 +57,9 @@ public class SysRegisterService { sysUser.setPassword(BCrypt.hashpw(password)); sysUser.setUserType(userType); - boolean exist = userMapper.exists(new LambdaQueryWrapper() - .eq(SysUser::getUserName, sysUser.getUserName())); + boolean exist = userMapper.lambda() + .eq(SysUser::getUserName, sysUser.getUserName()) + .exists(); if (exist) { throw new UserException("user.register.save.error", username); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java index f98ffad16..5fe3dd653 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java @@ -3,7 +3,6 @@ package org.dromara.web.service.impl; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.parameter.SaLoginParameter; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.Constants; @@ -95,7 +94,9 @@ public class EmailAuthStrategy implements IAuthStrategy { * @return 用户信息 */ private SysUserVo loadUserByEmail(String email) { - SysUserVo user = userMapper.selectVoOne(new LambdaQueryWrapper().eq(SysUser::getEmail, email)); + SysUserVo user = userMapper.lambda() + .eq(SysUser::getEmail, email) + .voOne(); if (ObjectUtil.isNull(user)) { log.info("登录用户:{} 不存在.", email); throw new UserException("user.not.exists", email); diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java index 4752175f3..cdb6022c7 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java @@ -4,7 +4,6 @@ import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.parameter.SaLoginParameter; import cn.hutool.core.util.ObjectUtil; import cn.hutool.crypto.digest.BCrypt; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.Constants; @@ -112,7 +111,9 @@ public class PasswordAuthStrategy implements IAuthStrategy { * @return 用户信息 */ private SysUserVo loadUserByUsername(String username) { - SysUserVo user = userMapper.selectVoOne(new LambdaQueryWrapper().eq(SysUser::getUserName, username)); + SysUserVo user = userMapper.lambda() + .eq(SysUser::getUserName, username) + .voOne(); if (ObjectUtil.isNull(user)) { log.info("登录用户:{} 不存在.", username); throw new UserException("user.not.exists", username); diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java index 523efc503..d938a40a8 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java @@ -3,7 +3,6 @@ package org.dromara.web.service.impl; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.parameter.SaLoginParameter; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.Constants; @@ -95,7 +94,9 @@ public class SmsAuthStrategy implements IAuthStrategy { * @return 用户信息 */ private SysUserVo loadUserByPhoneNumber(String phoneNumber) { - SysUserVo user = userMapper.selectVoOne(new LambdaQueryWrapper().eq(SysUser::getPhoneNumber, phoneNumber)); + SysUserVo user = userMapper.lambda() + .eq(SysUser::getPhoneNumber, phoneNumber) + .voOne(); if (ObjectUtil.isNull(user)) { log.info("登录用户:{} 不存在.", phoneNumber); throw new UserException("user.not.exists", phoneNumber); diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java index 24557edb6..566c63eeb 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java @@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.reflect.GenericTypeUtils; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.toolkit.ChainWrappers; import com.baomidou.mybatisplus.extension.toolkit.Db; import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.LogFactory; @@ -60,6 +62,24 @@ public interface BaseMapperPlus extends BaseMapper { return this.selectList(new QueryWrapper<>()); } + /** + * 创建当前 Mapper 绑定的 Lambda CRUD 链式操作。 + * + * @return Lambda CRUD 链式包装器 + */ + default LambdaCrudChainWrapper lambda() { + return new LambdaCrudChainWrapper<>(this); + } + + /** + * 创建当前 Mapper 绑定的 Lambda 链式更新。 + * + * @return Lambda 链式更新包装器 + */ + default LambdaUpdateChainWrapper lambdaUpdate() { + return ChainWrappers.lambdaUpdateChain(this); + } + /** * 批量插入实体对象集合 * diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/LambdaCrudChainWrapper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/LambdaCrudChainWrapper.java new file mode 100644 index 000000000..3ca49382a --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/LambdaCrudChainWrapper.java @@ -0,0 +1,399 @@ +package org.dromara.common.mybatis.core.mapper; + +import com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper; +import com.baomidou.mybatisplus.core.conditions.SharedString; +import com.baomidou.mybatisplus.core.conditions.query.Query; +import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; +import com.baomidou.mybatisplus.core.conditions.update.Update; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.metadata.TableFieldInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; +import com.baomidou.mybatisplus.core.toolkit.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import org.dromara.common.mybatis.core.query.LambdaQueryCondition; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; +import java.util.function.Predicate; + +/** + * Mapper 级 Lambda CRUD 链式包装器。 + * + * @param table 泛型 + * @param vo 泛型 + * @author Lion Li + */ +public class LambdaCrudChainWrapper extends AbstractLambdaWrapper> + implements Query, T, SFunction>, + Update, SFunction>, + LambdaQueryCondition> { + + private final BaseMapperPlus baseMapper; + private final List sqlSet; + private SharedString sqlSelect = new SharedString(); + + public LambdaCrudChainWrapper(BaseMapperPlus baseMapper) { + this.baseMapper = baseMapper; + super.setEntityClass(baseMapper.currentModelClass()); + super.initNeed(); + this.sqlSet = new ArrayList<>(); + } + + LambdaCrudChainWrapper(BaseMapperPlus baseMapper, T entity, Class entityClass, SharedString sqlSelect, + List sqlSet, AtomicInteger paramNameSeq, Map paramNameValuePairs, + MergeSegments mergeSegments, SharedString paramAlias, SharedString lastSql, + SharedString sqlComment, SharedString sqlFirst) { + this.baseMapper = baseMapper; + super.setEntity(entity); + super.setEntityClass(entityClass); + this.sqlSelect = sqlSelect == null ? new SharedString() : sqlSelect; + this.sqlSet = sqlSet == null ? new ArrayList<>() : sqlSet; + this.paramNameSeq = paramNameSeq; + this.paramNameValuePairs = paramNameValuePairs; + this.expression = mergeSegments; + this.paramAlias = paramAlias; + this.lastSql = lastSql; + this.sqlComment = sqlComment; + this.sqlFirst = sqlFirst; + } + + @Override + public LambdaCrudChainWrapper select(boolean condition, List> columns) { + if (condition && CollectionUtils.isNotEmpty(columns)) { + this.sqlSelect.setStringValue(columnsToString(false, columns)); + } + return typedThis; + } + + @SafeVarargs + public final LambdaCrudChainWrapper select(SFunction... columns) { + return select(true, CollectionUtils.toList(columns)); + } + + @SafeVarargs + public final LambdaCrudChainWrapper select(boolean condition, SFunction... columns) { + return select(condition, CollectionUtils.toList(columns)); + } + + @Override + public LambdaCrudChainWrapper select(Class entityClass, Predicate predicate) { + if (entityClass == null) { + entityClass = getEntityClass(); + } else { + setEntityClass(entityClass); + } + Assert.notNull(entityClass, "entityClass can not be null"); + this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(entityClass).chooseSelect(predicate)); + return typedThis; + } + + @Override + public String getSqlSelect() { + return sqlSelect.getStringValue(); + } + + @Override + public LambdaCrudChainWrapper set(boolean condition, SFunction column, Object val, String mapping) { + return maybeDo(condition, () -> { + String sql = formatParam(mapping, val); + sqlSet.add(columnToString(column) + Constants.EQUALS + sql); + }); + } + + /** + * 值不为 null 时设置更新字段。 + * + * @param column 字段 + * @param value 值 + * @return this + */ + public LambdaCrudChainWrapper setIfPresent(SFunction column, Object value) { + return set(value != null, column, value); + } + + /** + * 文本不为空时设置更新字段。 + * + * @param column 字段 + * @param value 值 + * @return this + */ + public LambdaCrudChainWrapper setIfText(SFunction column, String value) { + return set(org.dromara.common.core.utils.StringUtils.isNotBlank(value), column, value); + } + + @Override + public LambdaCrudChainWrapper setSql(boolean condition, String setSql, Object... params) { + return maybeDo(condition && StringUtils.isNotBlank(setSql), () -> sqlSet.add(formatSqlMaybeWithParam(setSql, params))); + } + + @Override + public LambdaCrudChainWrapper setIncrBy(boolean condition, SFunction column, Number val) { + return maybeDo(condition, () -> { + String realColumn = columnToString(column); + String realVal = val instanceof BigDecimal ? ((BigDecimal) val).toPlainString() : String.valueOf(val); + sqlSet.add(String.format("%s=%s + %s", realColumn, realColumn, realVal)); + }); + } + + @Override + public LambdaCrudChainWrapper setDecrBy(boolean condition, SFunction column, Number val) { + return maybeDo(condition, () -> { + String realColumn = columnToString(column); + String realVal = val instanceof BigDecimal ? ((BigDecimal) val).toPlainString() : String.valueOf(val); + sqlSet.add(String.format("%s=%s - %s", realColumn, realColumn, realVal)); + }); + } + + @Override + public String getSqlSet() { + if (CollectionUtils.isEmpty(sqlSet)) { + return null; + } + return String.join(Constants.COMMA, sqlSet); + } + + /** + * 获取查询条件 Wrapper。 + * + * @return this + */ + public LambdaCrudChainWrapper getWrapper() { + return typedThis; + } + + public LambdaCrudChainWrapper findInSet(Object value, SFunction column) { + return findInSet(true, value, column); + } + + public LambdaCrudChainWrapper findInSet(boolean condition, Object value, SFunction column) { + return findInSet(condition, value, columnToString(column)); + } + + public LambdaCrudChainWrapper findInSetIfPresent(Object value, SFunction column) { + return findInSet(value != null, value, column); + } + + /** + * 获取当前 Wrapper。 + * + * @return this + */ + public LambdaCrudChainWrapper build() { + return typedThis; + } + + /** + * 查询实体列表。 + * + * @return 实体列表 + */ + public List list() { + return baseMapper.selectList(typedThis); + } + + /** + * 查询实体分页记录。 + * + * @param page 分页条件 + * @return 实体分页记录 + */ + public List list(IPage page) { + return baseMapper.selectList(page, typedThis); + } + + /** + * 查询 VO 列表。 + * + * @return VO 列表 + */ + public List voList() { + return baseMapper.selectVoList(typedThis); + } + + /** + * 查询单列对象列表。 + * + * @return 单列对象列表 + */ + public List objs() { + return baseMapper.selectObjs(typedThis); + } + + /** + * 查询单列对象列表并转换类型。 + * + * @param mapper 转换函数 + * @param 转换后的类型 + * @return 单列对象列表 + */ + public List objs(Function mapper) { + return baseMapper.selectObjs(typedThis, mapper); + } + + /** + * 查询单个实体。 + * + * @return 实体 + */ + public T one() { + return baseMapper.selectOne(typedThis); + } + + /** + * 查询单个实体。 + * + * @param throwEx 查询到多条时是否抛异常 + * @return 实体 + */ + public T one(boolean throwEx) { + return baseMapper.selectOne(typedThis, throwEx); + } + + /** + * 查询单个实体 Optional。 + * + * @return Optional 实体 + */ + public Optional oneOpt() { + return Optional.ofNullable(one()); + } + + /** + * 查询单个 VO。 + * + * @return VO + */ + public V voOne() { + return baseMapper.selectVoOne(typedThis); + } + + /** + * 查询单个 VO。 + * + * @param throwEx 查询到多条时是否抛异常 + * @return VO + */ + public V voOne(boolean throwEx) { + return baseMapper.selectVoOne(typedThis, throwEx); + } + + /** + * 查询数量。 + * + * @return 数量 + */ + public Long count() { + return baseMapper.selectCount(typedThis); + } + + /** + * 判断是否存在。 + * + * @return 是否存在 + */ + public boolean exists() { + return baseMapper.exists(typedThis); + } + + /** + * 查询实体分页。 + * + * @param page 分页条件 + * @param

分页类型 + * @return 实体分页 + */ + public

> P page(P page) { + return baseMapper.selectPage(page, typedThis); + } + + /** + * 查询 VO 分页。 + * + * @param page 分页条件 + * @param

分页类型 + * @return VO 分页 + */ + public

> P voPage(IPage page) { + return baseMapper.selectVoPage(page, typedThis); + } + + /** + * 删除数据。 + * + * @return 是否删除成功 + */ + public boolean delete() { + return deleteCount() > 0; + } + + /** + * 删除数据。 + * + * @return 影响行数 + */ + public int deleteCount() { + return baseMapper.delete(typedThis); + } + + /** + * 使用 set 片段更新数据。 + * + * @return 是否更新成功 + */ + public boolean update() { + return updateCount() > 0; + } + + /** + * 使用实体和查询条件更新数据。 + * + * @param entity 实体 + * @return 是否更新成功 + */ + public boolean update(T entity) { + return updateCount(entity) > 0; + } + + /** + * 使用 set 片段更新数据。 + * + * @return 影响行数 + */ + public int updateCount() { + return baseMapper.update(typedThis); + } + + /** + * 使用实体和查询条件更新数据。 + * + * @param entity 实体 + * @return 影响行数 + */ + public int updateCount(T entity) { + return baseMapper.update(entity, typedThis); + } + + @Override + protected LambdaCrudChainWrapper instance() { + return new LambdaCrudChainWrapper<>(baseMapper, getEntity(), getEntityClass(), null, null, paramNameSeq, + paramNameValuePairs, new MergeSegments(), paramAlias, SharedString.emptyString(), SharedString.emptyString(), + SharedString.emptyString()); + } + + @Override + public void clear() { + super.clear(); + sqlSelect.toNull(); + sqlSet.clear(); + } + +} diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaQueryBuilder.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaQueryBuilder.java new file mode 100644 index 000000000..2de14879f --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaQueryBuilder.java @@ -0,0 +1,422 @@ +package org.dromara.common.mybatis.core.query; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; +import java.util.function.BiPredicate; +import java.util.function.Consumer; + +/** + * LambdaQueryWrapper 条件构造辅助类。 + * + * @param 实体类型 + * @author Lion Li + */ +public final class LambdaQueryBuilder implements LambdaQueryCondition> { + + private final LambdaQueryWrapper wrapper; + + LambdaQueryBuilder(LambdaQueryWrapper wrapper) { + this.wrapper = wrapper; + } + + @SafeVarargs + public final LambdaQueryBuilder select(SFunction... columns) { + wrapper.select(columns); + return this; + } + + public LambdaQueryBuilder eq(SFunction column, Object value) { + wrapper.eq(column, value); + return this; + } + + public LambdaQueryBuilder eq(boolean condition, SFunction column, Object value) { + wrapper.eq(condition, column, value); + return this; + } + + public LambdaQueryBuilder ne(SFunction column, Object value) { + wrapper.ne(column, value); + return this; + } + + public LambdaQueryBuilder ne(boolean condition, SFunction column, Object value) { + wrapper.ne(condition, column, value); + return this; + } + + public LambdaQueryBuilder gt(SFunction column, Object value) { + wrapper.gt(column, value); + return this; + } + + public LambdaQueryBuilder gt(boolean condition, SFunction column, Object value) { + wrapper.gt(condition, column, value); + return this; + } + + public LambdaQueryBuilder ge(SFunction column, Object value) { + wrapper.ge(column, value); + return this; + } + + public LambdaQueryBuilder ge(boolean condition, SFunction column, Object value) { + wrapper.ge(condition, column, value); + return this; + } + + public LambdaQueryBuilder lt(SFunction column, Object value) { + wrapper.lt(column, value); + return this; + } + + public LambdaQueryBuilder lt(boolean condition, SFunction column, Object value) { + wrapper.lt(condition, column, value); + return this; + } + + public LambdaQueryBuilder le(SFunction column, Object value) { + wrapper.le(column, value); + return this; + } + + public LambdaQueryBuilder le(boolean condition, SFunction column, Object value) { + wrapper.le(condition, column, value); + return this; + } + + public LambdaQueryBuilder like(SFunction column, Object value) { + wrapper.like(column, value); + return this; + } + + public LambdaQueryBuilder like(boolean condition, SFunction column, Object value) { + wrapper.like(condition, column, value); + return this; + } + + public LambdaQueryBuilder notLike(SFunction column, Object value) { + wrapper.notLike(column, value); + return this; + } + + public LambdaQueryBuilder notLike(boolean condition, SFunction column, Object value) { + wrapper.notLike(condition, column, value); + return this; + } + + public LambdaQueryBuilder likeLeft(SFunction column, Object value) { + wrapper.likeLeft(column, value); + return this; + } + + public LambdaQueryBuilder likeLeft(boolean condition, SFunction column, Object value) { + wrapper.likeLeft(condition, column, value); + return this; + } + + public LambdaQueryBuilder likeRight(SFunction column, Object value) { + wrapper.likeRight(column, value); + return this; + } + + public LambdaQueryBuilder likeRight(boolean condition, SFunction column, Object value) { + wrapper.likeRight(condition, column, value); + return this; + } + + public LambdaQueryBuilder between(SFunction column, Object begin, Object end) { + wrapper.between(column, begin, end); + return this; + } + + public LambdaQueryBuilder between(boolean condition, SFunction column, Object begin, Object end) { + wrapper.between(condition, column, begin, end); + return this; + } + + public LambdaQueryBuilder notBetween(SFunction column, Object begin, Object end) { + wrapper.notBetween(column, begin, end); + return this; + } + + public LambdaQueryBuilder notBetween(boolean condition, SFunction column, Object begin, Object end) { + wrapper.notBetween(condition, column, begin, end); + return this; + } + + public LambdaQueryBuilder allEq(Map params, boolean null2IsNull) { + wrapper.allEq(true, (Map) params, null2IsNull); + return this; + } + + public LambdaQueryBuilder allEq(boolean condition, Map params, boolean null2IsNull) { + wrapper.allEq(condition, (Map) params, null2IsNull); + return this; + } + + public LambdaQueryBuilder allEq(BiPredicate, Object> filter, Map params, boolean null2IsNull) { + wrapper.allEq(true, (BiPredicate) filter, (Map) params, null2IsNull); + return this; + } + + public LambdaQueryBuilder allEq(boolean condition, BiPredicate, Object> filter, Map params, boolean null2IsNull) { + wrapper.allEq(condition, (BiPredicate) filter, (Map) params, null2IsNull); + return this; + } + + public LambdaQueryBuilder isNull(SFunction column) { + wrapper.isNull(column); + return this; + } + + public LambdaQueryBuilder isNull(boolean condition, SFunction column) { + wrapper.isNull(condition, column); + return this; + } + + public LambdaQueryBuilder isNotNull(SFunction column) { + wrapper.isNotNull(column); + return this; + } + + public LambdaQueryBuilder isNotNull(boolean condition, SFunction column) { + wrapper.isNotNull(condition, column); + return this; + } + + public LambdaQueryBuilder in(SFunction column, Collection values) { + wrapper.in(column, values); + return this; + } + + public LambdaQueryBuilder in(boolean condition, SFunction column, Collection values) { + wrapper.in(condition, column, values); + return this; + } + + public LambdaQueryBuilder in(SFunction column, Object... values) { + wrapper.in(column, values); + return this; + } + + public LambdaQueryBuilder in(boolean condition, SFunction column, Object... values) { + wrapper.in(condition, column, values); + return this; + } + + public LambdaQueryBuilder notIn(SFunction column, Collection values) { + wrapper.notIn(column, values); + return this; + } + + public LambdaQueryBuilder notIn(boolean condition, SFunction column, Collection values) { + wrapper.notIn(condition, column, values); + return this; + } + + public LambdaQueryBuilder notIn(SFunction column, Object... values) { + wrapper.notIn(column, values); + return this; + } + + public LambdaQueryBuilder notIn(boolean condition, SFunction column, Object... values) { + wrapper.notIn(condition, column, values); + return this; + } + + @SafeVarargs + public final LambdaQueryBuilder groupBy(SFunction... columns) { + wrapper.groupBy(Arrays.asList(columns)); + return this; + } + + @SafeVarargs + public final LambdaQueryBuilder groupBy(boolean condition, SFunction... columns) { + wrapper.groupBy(condition, Arrays.asList(columns)); + return this; + } + + public LambdaQueryBuilder orderBy(boolean condition, boolean isAsc, SFunction column) { + wrapper.orderBy(condition, isAsc, column); + return this; + } + + @SafeVarargs + public final LambdaQueryBuilder orderByAsc(SFunction... columns) { + wrapper.orderByAsc(Arrays.asList(columns)); + return this; + } + + @SafeVarargs + public final LambdaQueryBuilder orderByAsc(boolean condition, SFunction... columns) { + wrapper.orderByAsc(condition, Arrays.asList(columns)); + return this; + } + + @SafeVarargs + public final LambdaQueryBuilder orderByDesc(SFunction... columns) { + wrapper.orderByDesc(Arrays.asList(columns)); + return this; + } + + @SafeVarargs + public final LambdaQueryBuilder orderByDesc(boolean condition, SFunction... columns) { + wrapper.orderByDesc(condition, Arrays.asList(columns)); + return this; + } + + public LambdaQueryBuilder having(String sqlHaving, Object... params) { + wrapper.having(sqlHaving, params); + return this; + } + + public LambdaQueryBuilder having(boolean condition, String sqlHaving, Object... params) { + wrapper.having(condition, sqlHaving, params); + return this; + } + + public LambdaQueryBuilder and(Consumer> consumer) { + wrapper.and(consumer); + return this; + } + + public LambdaQueryBuilder and(boolean condition, Consumer> consumer) { + wrapper.and(condition, consumer); + return this; + } + + public LambdaQueryBuilder or() { + wrapper.or(); + return this; + } + + public LambdaQueryBuilder or(Consumer> consumer) { + wrapper.or(consumer); + return this; + } + + public LambdaQueryBuilder or(boolean condition, Consumer> consumer) { + wrapper.or(condition, consumer); + return this; + } + + public LambdaQueryBuilder nested(Consumer> consumer) { + wrapper.nested(consumer); + return this; + } + + public LambdaQueryBuilder nested(boolean condition, Consumer> consumer) { + wrapper.nested(condition, consumer); + return this; + } + + public LambdaQueryBuilder exists(String existsSql, Object... values) { + wrapper.exists(existsSql, values); + return this; + } + + public LambdaQueryBuilder exists(boolean condition, String existsSql, Object... values) { + wrapper.exists(condition, existsSql, values); + return this; + } + + public LambdaQueryBuilder eqSql(SFunction column, String inValue) { + wrapper.eqSql(true, column, inValue); + return this; + } + + public LambdaQueryBuilder eqSql(boolean condition, SFunction column, String inValue) { + wrapper.eqSql(condition, column, inValue); + return this; + } + + public LambdaQueryBuilder inSql(SFunction column, String inValue) { + wrapper.inSql(true, column, inValue); + return this; + } + + public LambdaQueryBuilder inSql(boolean condition, SFunction column, String inValue) { + wrapper.inSql(condition, column, inValue); + return this; + } + + public LambdaQueryBuilder notInSql(SFunction column, String inValue) { + wrapper.notInSql(true, column, inValue); + return this; + } + + public LambdaQueryBuilder notInSql(boolean condition, SFunction column, String inValue) { + wrapper.notInSql(condition, column, inValue); + return this; + } + + public LambdaQueryBuilder notExists(String existsSql, Object... values) { + wrapper.notExists(existsSql, values); + return this; + } + + public LambdaQueryBuilder notExists(boolean condition, String existsSql, Object... values) { + wrapper.notExists(condition, existsSql, values); + return this; + } + + public LambdaQueryBuilder apply(String applySql, Object... values) { + wrapper.apply(applySql, values); + return this; + } + + public LambdaQueryBuilder apply(boolean condition, String applySql, Object... values) { + wrapper.apply(condition, applySql, values); + return this; + } + + public LambdaQueryBuilder apply(Consumer> consumer) { + consumer.accept(wrapper); + return this; + } + + public LambdaQueryBuilder func(Consumer> consumer) { + wrapper.func(true, consumer); + return this; + } + + public LambdaQueryBuilder func(boolean condition, Consumer> consumer) { + wrapper.func(condition, consumer); + return this; + } + + public LambdaQueryBuilder not(Consumer> consumer) { + wrapper.not(true, consumer); + return this; + } + + public LambdaQueryBuilder not(boolean condition, Consumer> consumer) { + wrapper.not(condition, consumer); + return this; + } + + public LambdaQueryBuilder comment(String comment) { + wrapper.comment(true, comment); + return this; + } + + public LambdaQueryBuilder comment(boolean condition, String comment) { + wrapper.comment(condition, comment); + return this; + } + + public LambdaQueryBuilder last(String lastSql) { + wrapper.last(lastSql); + return this; + } + + public LambdaQueryWrapper build() { + return wrapper; + } + +} diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaQueryCondition.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaQueryCondition.java new file mode 100644 index 000000000..459465e91 --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaQueryCondition.java @@ -0,0 +1,146 @@ +package org.dromara.common.mybatis.core.query; + +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.helper.DataBaseHelper; + +import java.util.Collection; +import java.util.Map; + +/** + * Lambda 查询常用条件扩展。 + * + * @param 实体类型 + * @param 链式返回类型 + * @author Lion Li + */ +public interface LambdaQueryCondition { + + Children eq(boolean condition, SFunction column, Object value); + + Children ne(boolean condition, SFunction column, Object value); + + Children gt(boolean condition, SFunction column, Object value); + + Children ge(boolean condition, SFunction column, Object value); + + Children lt(boolean condition, SFunction column, Object value); + + Children le(boolean condition, SFunction column, Object value); + + Children like(boolean condition, SFunction column, Object value); + + Children notLike(boolean condition, SFunction column, Object value); + + Children likeLeft(boolean condition, SFunction column, Object value); + + Children likeRight(boolean condition, SFunction column, Object value); + + Children between(boolean condition, SFunction column, Object begin, Object end); + + Children notBetween(boolean condition, SFunction column, Object begin, Object end); + + Children in(boolean condition, SFunction column, Collection values); + + Children in(boolean condition, SFunction column, Object... values); + + Children notIn(boolean condition, SFunction column, Collection values); + + Children notIn(boolean condition, SFunction column, Object... values); + + Children apply(boolean condition, String applySql, Object... values); + + default Children eqIfPresent(SFunction column, Object value) { + return eq(value != null, column, value); + } + + default Children eqIfText(SFunction column, String value) { + return eq(StringUtils.isNotBlank(value), column, value); + } + + default Children neIfPresent(SFunction column, Object value) { + return ne(value != null, column, value); + } + + default Children neIfText(SFunction column, String value) { + return ne(StringUtils.isNotBlank(value), column, value); + } + + default Children gtIfPresent(SFunction column, Object value) { + return gt(value != null, column, value); + } + + default Children geIfPresent(SFunction column, Object value) { + return ge(value != null, column, value); + } + + default Children ltIfPresent(SFunction column, Object value) { + return lt(value != null, column, value); + } + + default Children leIfPresent(SFunction column, Object value) { + return le(value != null, column, value); + } + + default Children likeIfText(SFunction column, String value) { + return like(StringUtils.isNotBlank(value), column, value); + } + + default Children notLikeIfText(SFunction column, String value) { + return notLike(StringUtils.isNotBlank(value), column, value); + } + + default Children likeLeftIfText(SFunction column, String value) { + return likeLeft(StringUtils.isNotBlank(value), column, value); + } + + default Children likeRightIfText(SFunction column, String value) { + return likeRight(StringUtils.isNotBlank(value), column, value); + } + + default Children betweenIfPresent(SFunction column, Object begin, Object end) { + return between(begin != null && end != null, column, begin, end); + } + + default Children betweenParams(SFunction column, Map params, String beginKey, String endKey) { + if (params == null) { + return between(false, column, null, null); + } + Object begin = params.get(beginKey); + Object end = params.get(endKey); + return between(begin != null && end != null, column, begin, end); + } + + default Children notBetweenIfPresent(SFunction column, Object begin, Object end) { + return notBetween(begin != null && end != null, column, begin, end); + } + + default Children inIfNotEmpty(SFunction column, Collection values) { + return in(values != null && !values.isEmpty(), column, values); + } + + default Children inIfNotEmpty(SFunction column, Object... values) { + return in(values != null && values.length > 0, column, values); + } + + default Children notInIfNotEmpty(SFunction column, Collection values) { + return notIn(values != null && !values.isEmpty(), column, values); + } + + default Children notInIfNotEmpty(SFunction column, Object... values) { + return notIn(values != null && values.length > 0, column, values); + } + + default Children findInSet(Object value, String column) { + return findInSet(true, value, column); + } + + default Children findInSet(boolean condition, Object value, String column) { + return apply(condition, DataBaseHelper.findInSet(value, column)); + } + + default Children findInSetIfPresent(Object value, String column) { + return findInSet(value != null, value, column); + } + +} diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/QueryBuilder.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/QueryBuilder.java new file mode 100644 index 000000000..30b710d80 --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/QueryBuilder.java @@ -0,0 +1,19 @@ +package org.dromara.common.mybatis.core.query; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; + +/** + * MyBatis-Plus 查询构造器入口。 + * + * @author Lion Li + */ +public final class QueryBuilder { + + private QueryBuilder() { + } + + public static LambdaQueryBuilder lambda(Class entityClass) { + return new LambdaQueryBuilder<>(Wrappers.lambdaQuery(entityClass)); + } + +} diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestBatchController.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestBatchController.java index af8c77b3a..403eab494 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestBatchController.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestBatchController.java @@ -1,11 +1,10 @@ package org.dromara.demo.controller; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.web.core.BaseController; import org.dromara.demo.domain.TestDemo; import org.dromara.demo.mapper.TestDemoMapper; -import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -83,8 +82,9 @@ public class TestBatchController extends BaseController { @DeleteMapping() // @DS("slave") public R remove() { - return toAjax(testDemoMapper.delete(new LambdaQueryWrapper() - .eq(TestDemo::getOrderNum, -1L))); + return toAjax(testDemoMapper.lambda() + .eq(TestDemo::getOrderNum, -1L) + .deleteCount()); } } diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/service/GenTableServiceImpl.java index 4c0595004..ad1c5022c 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/service/GenTableServiceImpl.java +++ b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/service/GenTableServiceImpl.java @@ -8,7 +8,6 @@ import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DSTransactional; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -66,9 +65,10 @@ public class GenTableServiceImpl implements IGenTableService { */ @Override public List selectGenTableColumnListByTableId(Long tableId) { - return genTableColumnMapper.selectList(new LambdaQueryWrapper() + return genTableColumnMapper.lambda() .eq(GenTableColumn::getTableId, tableId) - .orderByAsc(GenTableColumn::getSort)); + .orderByAsc(GenTableColumn::getSort) + .list(); } /** @@ -246,7 +246,9 @@ public class GenTableServiceImpl implements IGenTableService { public void deleteGenTableByIds(Long[] tableIds) { List ids = Arrays.asList(tableIds); baseMapper.deleteByIds(ids); - genTableColumnMapper.delete(new LambdaQueryWrapper().in(GenTableColumn::getTableId, ids)); + genTableColumnMapper.lambda() + .in(GenTableColumn::getTableId, ids) + .deleteCount(); } /** @@ -551,10 +553,11 @@ public class GenTableServiceImpl implements IGenTableService { return tables; } List tableIds = StreamUtils.toList(tables, GenTable::getTableId); - List columns = genTableColumnMapper.selectList(new LambdaQueryWrapper() + List columns = genTableColumnMapper.lambda() .in(GenTableColumn::getTableId, tableIds) .orderByAsc(GenTableColumn::getTableId) - .orderByAsc(GenTableColumn::getSort)); + .orderByAsc(GenTableColumn::getSort) + .list(); Map> columnMap = StreamUtils.groupByKey(columns, GenTableColumn::getTableId); tables.forEach(table -> table.setColumns(columnMap.getOrDefault(table.getTableId(), new ArrayList<>()))); return tables; diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm index ce5a6dff3..b7dc57b3d 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm @@ -8,11 +8,11 @@ import org.dromara.common.core.domain.PageResult; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; #end -#if($enableStatus || $enableSort) -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -#end import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +#if($enableUnique) import com.baomidou.mybatisplus.core.toolkit.Wrappers; +#end +import org.dromara.common.mybatis.core.query.QueryBuilder; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -134,7 +134,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service { #if($hasBetween) Map params = bo.getParams(); #end - LambdaQueryWrapper<${ClassName}> lqw = Wrappers.lambdaQuery(); + return QueryBuilder.lambda(${ClassName}.class) #foreach($column in $columns) #if($column.query) #set($queryType=$column.queryType) @@ -144,29 +144,47 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service { #if($queryType != 'BETWEEN') #if($javaType == 'String') #set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())') +#if($queryType == 'LIKE') + .likeIfText(${ClassName}::get$AttrName, bo.get$AttrName()) +#elseif($queryType == 'EQ') + .eqIfText(${ClassName}::get$AttrName, bo.get$AttrName()) +#elseif($queryType == 'NE') + .neIfText(${ClassName}::get$AttrName, bo.get$AttrName()) +#else + .$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName()) +#end #else #set($condition='bo.get'+$AttrName+'() != null') -#end - lqw.$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName()); +#if($queryType == 'EQ') + .eqIfPresent(${ClassName}::get$AttrName, bo.get$AttrName()) +#elseif($queryType == 'NE') + .neIfPresent(${ClassName}::get$AttrName, bo.get$AttrName()) +#elseif($queryType == 'GT') + .gtIfPresent(${ClassName}::get$AttrName, bo.get$AttrName()) +#elseif($queryType == 'LT') + .ltIfPresent(${ClassName}::get$AttrName, bo.get$AttrName()) #else - lqw.between(params.get("begin$AttrName") != null && params.get("end$AttrName") != null, - ${ClassName}::get$AttrName, params.get("begin$AttrName"), params.get("end$AttrName")); + .$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName()) +#end +#end +#else + .betweenParams(${ClassName}::get$AttrName, params, "begin$AttrName", "end$AttrName") #end #end #end #if($table.tree && "" != $treeAncestorsField) - lqw.orderByAsc(${ClassName}::get${TreeAncestorsCap}); + .orderByAsc(${ClassName}::get${TreeAncestorsCap}) #end #if($table.tree && "" != $treeParentCode) - lqw.orderByAsc(${ClassName}::get${TreeParentCap}); + .orderByAsc(${ClassName}::get${TreeParentCap}) #end #if($table.tree && "" != $treeOrderField) - lqw.orderByAsc(${ClassName}::get${TreeOrderCap}); + .orderByAsc(${ClassName}::get${TreeOrderCap}) #elseif($enableSort) - lqw.orderByAsc(${ClassName}::get${sortColumn.capJavaField}); + .orderByAsc(${ClassName}::get${sortColumn.capJavaField}) #end - lqw.orderByAsc(${ClassName}::get${pkColumn.capJavaField}); - return lqw; + .orderByAsc(${ClassName}::get${pkColumn.capJavaField}) + .build(); } /** @@ -215,9 +233,10 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service { */ @Override public Boolean updateStatus(${pkColumn.javaType} ${pkColumn.javaField}, ${statusColumn.javaType} status) { - return baseMapper.update(null, new LambdaUpdateWrapper<${ClassName}>() + return baseMapper.lambda() .set(${ClassName}::get${statusColumn.capJavaField}, status) - .eq(${ClassName}::get${pkColumn.capJavaField}, ${pkColumn.javaField})) > 0; + .eq(${ClassName}::get${pkColumn.capJavaField}, ${pkColumn.javaField}) + .update(); } #end @@ -231,9 +250,10 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service { */ @Override public Boolean updateSort(${pkColumn.javaType} ${pkColumn.javaField}, ${sortColumn.javaType} sortValue) { - return baseMapper.update(null, new LambdaUpdateWrapper<${ClassName}>() + return baseMapper.lambda() .set(${ClassName}::get${sortColumn.capJavaField}, sortValue) - .eq(${ClassName}::get${pkColumn.capJavaField}, ${pkColumn.javaField})) > 0; + .eq(${ClassName}::get${pkColumn.capJavaField}, ${pkColumn.javaField}) + .update(); } #end @@ -296,12 +316,14 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service { } private void updateChildrenAncestors(${pkColumn.javaType} currentId, String newAncestors, String oldAncestors) { - List<${ClassName}> children = baseMapper.selectList(new LambdaQueryWrapper<${ClassName}>() - .select(${ClassName}::get${pkColumn.capJavaField}, ${ClassName}::get${TreeAncestorsCap}())); + List<${ClassName}> children = baseMapper.lambda() + .select(${ClassName}::get${pkColumn.capJavaField}, ${ClassName}::get${TreeAncestorsCap}) + .findInSet(currentId, ${ClassName}::get${TreeAncestorsCap}) + .list(); List<${ClassName}> updateList = new ArrayList<>(); for (${ClassName} child : children) { String ancestors = child.get${TreeAncestorsCap}(); - if (StringUtils.isBlank(ancestors) || !containsAncestor(ancestors, currentId)) { + if (StringUtils.isBlank(ancestors)) { continue; } ${ClassName} update = new ${ClassName}(); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java index 5777e6a90..74bbdfe47 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -1,7 +1,6 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.base.MPJBaseMapper; import com.github.yulichang.toolkit.JoinWrappers; @@ -9,7 +8,6 @@ import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.mybatis.annotation.DataColumn; import org.dromara.common.mybatis.annotation.DataPermission; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; -import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.system.domain.SysDept; import org.dromara.system.domain.SysRole; import org.dromara.system.domain.SysRoleDept; @@ -66,7 +64,7 @@ public interface SysDeptMapper extends BaseMapperPlus, MPJBa @DataColumn(key = "deptName", value = "dept_id") }) default long countDeptById(Long deptId) { - return this.selectCount(new LambdaQueryWrapper().eq(SysDept::getDeptId, deptId)); + return this.lambda().eq(SysDept::getDeptId, deptId).count(); } /** @@ -76,9 +74,10 @@ public interface SysDeptMapper extends BaseMapperPlus, MPJBa * @return 包含子部门的列表 */ default List selectListByParentId(Long parentId) { - return this.selectList(new LambdaQueryWrapper() + return this.lambda() .select(SysDept::getDeptId) - .apply(DataBaseHelper.findInSet(parentId, "ancestors"))); + .findInSet(parentId, SysDept::getAncestors) + .list(); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java index 7298db3d0..8d5eba362 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java @@ -1,6 +1,5 @@ package org.dromara.system.mapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.system.domain.SysDictData; import org.dromara.system.domain.vo.SysDictDataVo; @@ -21,9 +20,9 @@ public interface SysDictDataMapper extends BaseMapperPlus selectDictDataByType(String dictType) { - return selectVoList( - new LambdaQueryWrapper() - .eq(SysDictData::getDictType, dictType) - .orderByAsc(SysDictData::getDictSort)); + return this.lambda() + .eq(SysDictData::getDictType, dictType) + .orderByAsc(SysDictData::getDictSort) + .voList(); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java index a51b1352a..d0ccca37c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java @@ -1,7 +1,6 @@ package org.dromara.system.mapper; import cn.hutool.core.collection.CollUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.yulichang.base.MPJBaseMapper; import com.github.yulichang.toolkit.JoinWrappers; import org.dromara.common.core.constant.SystemConstants; @@ -97,12 +96,12 @@ public interface SysMenuMapper extends BaseMapperPlus, MPJBa * @return 菜单列表 */ default List selectMenuTreeAll() { - LambdaQueryWrapper lqw = new LambdaQueryWrapper() + return this.lambda() .in(SysMenu::getMenuType, SystemConstants.TYPE_DIR, SystemConstants.TYPE_MENU) .eq(SysMenu::getStatus, SystemConstants.NORMAL) .orderByAsc(SysMenu::getParentId) - .orderByAsc(SysMenu::getOrderNum); - return this.selectList(lqw); + .orderByAsc(SysMenu::getOrderNum) + .list(); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java index 8e740e0a4..ace0a4829 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java @@ -1,7 +1,6 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.base.MPJBaseMapper; import com.github.yulichang.toolkit.JoinWrappers; @@ -62,7 +61,7 @@ public interface SysPostMapper extends BaseMapperPlus, MPJBa @DataColumn(key = "userName", value = "create_by") }) default long selectPostCount(Collection postIds) { - return this.selectCount(new LambdaQueryWrapper().in(SysPost::getPostId, postIds)); + return this.lambda().in(SysPost::getPostId, postIds).count(); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java index 96d127a7a..b2242832e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java @@ -1,7 +1,6 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.base.MPJBaseMapper; @@ -64,7 +63,7 @@ public interface SysRoleMapper extends BaseMapperPlus, MPJBa @DataColumn(key = "userName", value = "create_by") }) default long selectRoleCount(Collection roleIds) { - return this.selectCount(new LambdaQueryWrapper().in(SysRole::getRoleId, roleIds)); + return this.lambda().in(SysRole::getRoleId, roleIds).count(); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMenuMapper.java index 6b552965a..e5eb4b883 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMenuMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMenuMapper.java @@ -1,6 +1,5 @@ package org.dromara.system.mapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.system.domain.SysRoleMenu; @@ -20,7 +19,7 @@ public interface SysRoleMenuMapper extends BaseMapperPlus menuIds) { - return this.delete(new LambdaUpdateWrapper().in(SysRoleMenu::getMenuId, menuIds)); + return this.lambda().in(SysRoleMenu::getMenuId, menuIds).deleteCount(); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java index 5cd3b7b22..b7aedc1bf 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java @@ -1,7 +1,6 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.base.MPJBaseMapper; @@ -136,7 +135,7 @@ public interface SysUserMapper extends BaseMapperPlus, MPJBa @DataColumn(key = "userName", value = "create_by") }) default long countUserById(Long userId) { - return this.selectCount(new LambdaQueryWrapper().eq(SysUser::getUserId, userId)); + return lambda().eq(SysUser::getUserId, userId).count(); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java index 4c1c8b9df..f5d048af2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java @@ -1,6 +1,6 @@ package org.dromara.system.mapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import cn.hutool.core.convert.Convert; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.system.domain.SysUserRole; @@ -20,9 +20,10 @@ public interface SysUserRoleMapper extends BaseMapperPlus selectUserIdsByRoleId(Long roleId) { - return this.selectObjs(new LambdaQueryWrapper() - .select(SysUserRole::getUserId).eq(SysUserRole::getRoleId, roleId) - ); + return this.lambda() + .select(SysUserRole::getUserId) + .eq(SysUserRole::getRoleId, roleId) + .objs(Convert::toLong); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java index d03d9bd48..adbf10ac9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java @@ -4,8 +4,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -14,6 +12,7 @@ import org.dromara.common.core.domain.PageResult; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.system.domain.SysClient; import org.dromara.system.domain.bo.SysClientBo; import org.dromara.system.domain.vo.SysClientVo; @@ -64,7 +63,7 @@ public class SysClientServiceImpl implements ISysClientService { @Cacheable(cacheNames = CacheNames.SYS_CLIENT, key = "#clientId") @Override public SysClientVo queryByClientId(String clientId) { - SysClientVo vo = baseMapper.selectVoOne(new LambdaQueryWrapper().eq(SysClient::getClientId, clientId)); + SysClientVo vo = baseMapper.lambda().eq(SysClient::getClientId, clientId).voOne(); fillClientRuleFields(vo); return vo; } @@ -105,13 +104,13 @@ public class SysClientServiceImpl implements ISysClientService { * @return 包含 clientId、clientKey、状态等条件的查询包装器 */ private LambdaQueryWrapper buildQueryWrapper(SysClientBo bo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(StringUtils.isNotBlank(bo.getClientId()), SysClient::getClientId, bo.getClientId()); - lqw.eq(StringUtils.isNotBlank(bo.getClientKey()), SysClient::getClientKey, bo.getClientKey()); - lqw.eq(StringUtils.isNotBlank(bo.getClientSecret()), SysClient::getClientSecret, bo.getClientSecret()); - lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysClient::getStatus, bo.getStatus()); - lqw.orderByAsc(SysClient::getId); - return lqw; + return QueryBuilder.lambda(SysClient.class) + .eqIfText(SysClient::getClientId, bo.getClientId()) + .eqIfText(SysClient::getClientKey, bo.getClientKey()) + .eqIfText(SysClient::getClientSecret, bo.getClientSecret()) + .eqIfText(SysClient::getStatus, bo.getStatus()) + .orderByAsc(SysClient::getId) + .build(); } /** @@ -163,10 +162,10 @@ public class SysClientServiceImpl implements ISysClientService { @CacheEvict(cacheNames = CacheNames.SYS_CLIENT, key = "#clientId") @Override public int updateClientStatus(String clientId, String status) { - return baseMapper.update(null, - new LambdaUpdateWrapper() - .set(SysClient::getStatus, status) - .eq(SysClient::getClientId, clientId)); + return baseMapper.lambda() + .set(SysClient::getStatus, status) + .eq(SysClient::getClientId, clientId) + .updateCount(); } /** @@ -190,9 +189,10 @@ public class SysClientServiceImpl implements ISysClientService { */ @Override public boolean checkClickKeyUnique(SysClientBo client) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysClient::getClientKey, client.getClientKey()) - .ne(ObjectUtil.isNotNull(client.getId()), SysClient::getId, client.getId())); + .neIfPresent(SysClient::getId, client.getId()) + .exists(); return !exist; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java index f6f93c2e6..049c1d160 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; @@ -17,6 +16,7 @@ import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.common.redis.utils.CacheUtils; import org.dromara.system.api.ConfigService; import org.dromara.system.domain.SysConfig; @@ -77,8 +77,7 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { @Cacheable(cacheNames = CacheNames.SYS_CONFIG, key = "#configKey") @Override public String selectConfigByKey(String configKey) { - SysConfig retConfig = baseMapper.selectOne(new LambdaQueryWrapper() - .eq(SysConfig::getConfigKey, configKey)); + SysConfig retConfig = baseMapper.lambda().eq(SysConfig::getConfigKey, configKey).one(); return ObjectUtils.notNullGetter(retConfig, SysConfig::getConfigValue, StringUtils.EMPTY); } @@ -112,14 +111,13 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { */ private LambdaQueryWrapper buildQueryWrapper(SysConfigBo bo) { Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.like(StringUtils.isNotBlank(bo.getConfigName()), SysConfig::getConfigName, bo.getConfigName()); - lqw.eq(StringUtils.isNotBlank(bo.getConfigType()), SysConfig::getConfigType, bo.getConfigType()); - lqw.like(StringUtils.isNotBlank(bo.getConfigKey()), SysConfig::getConfigKey, bo.getConfigKey()); - lqw.between(params.get("beginTime") != null && params.get("endTime") != null, - SysConfig::getCreateTime, params.get("beginTime"), params.get("endTime")); - lqw.orderByAsc(SysConfig::getConfigId); - return lqw; + return QueryBuilder.lambda(SysConfig.class) + .likeIfText(SysConfig::getConfigName, bo.getConfigName()) + .eqIfText(SysConfig::getConfigType, bo.getConfigType()) + .likeIfText(SysConfig::getConfigKey, bo.getConfigKey()) + .betweenParams(SysConfig::getCreateTime, params, "beginTime", "endTime") + .orderByAsc(SysConfig::getConfigId) + .build(); } /** @@ -158,8 +156,9 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { row = baseMapper.updateById(config); } else { CacheUtils.evict(CacheNames.SYS_CONFIG, config.getConfigKey()); - row = baseMapper.update(config, new LambdaQueryWrapper() - .eq(SysConfig::getConfigKey, config.getConfigKey())); + row = baseMapper.lambda() + .eq(SysConfig::getConfigKey, config.getConfigKey()) + .updateCount(config); } if (row > 0) { return config.getConfigValue(); @@ -200,9 +199,10 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { */ @Override public boolean checkConfigKeyUnique(SysConfigBo config) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysConfig::getConfigKey, config.getConfigKey()) - .ne(ObjectUtil.isNotNull(config.getConfigId()), SysConfig::getConfigId, config.getConfigId())); + .neIfPresent(SysConfig::getConfigId, config.getConfigId()) + .exists(); return !exist; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java index 8f6cecc98..e94c5780c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java @@ -3,7 +3,6 @@ package org.dromara.system.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.utils.StreamUtils; @@ -44,10 +43,10 @@ public class SysDataScopeServiceImpl implements ISysDataScopeService { if (ObjectUtil.isNull(roleId)) { return "-1"; } - List list = roleDeptMapper.selectList( - new LambdaQueryWrapper() - .select(SysRoleDept::getDeptId) - .eq(SysRoleDept::getRoleId, roleId)); + List list = roleDeptMapper.lambda() + .select(SysRoleDept::getDeptId) + .eq(SysRoleDept::getRoleId, roleId) + .list(); if (CollUtil.isNotEmpty(list)) { return StreamUtils.join(list, rd -> Convert.toStr(rd.getDeptId())); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index d42bfb84f..e5fbd6865 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -6,8 +6,6 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; @@ -16,7 +14,8 @@ import org.dromara.common.core.domain.PageResult; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.*; import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.helper.DataBaseHelper; +import org.dromara.common.mybatis.core.query.LambdaQueryBuilder; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.DeptService; @@ -97,27 +96,23 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { */ private LambdaQueryWrapper buildQueryWrapper(SysDeptBo bo) { Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(SysDept::getDelFlag, SystemConstants.NORMAL); - lqw.eq(ObjectUtil.isNotNull(bo.getDeptId()), SysDept::getDeptId, bo.getDeptId()); - lqw.eq(ObjectUtil.isNotNull(bo.getParentId()), SysDept::getParentId, bo.getParentId()); - lqw.like(StringUtils.isNotBlank(bo.getDeptName()), SysDept::getDeptName, bo.getDeptName()); - lqw.like(StringUtils.isNotBlank(bo.getDeptCategory()), SysDept::getDeptCategory, bo.getDeptCategory()); - lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysDept::getStatus, bo.getStatus()); - lqw.between(params.get("beginTime") != null && params.get("endTime") != null, - SysDept::getCreateTime, params.get("beginTime"), params.get("endTime")); - lqw.orderByAsc(SysDept::getAncestors); - lqw.orderByAsc(SysDept::getParentId); - lqw.orderByAsc(SysDept::getOrderNum); - lqw.orderByAsc(SysDept::getDeptId); + LambdaQueryBuilder builder = QueryBuilder.lambda(SysDept.class) + .eq(SysDept::getDelFlag, SystemConstants.NORMAL) + .eqIfPresent(SysDept::getDeptId, bo.getDeptId()) + .eqIfPresent(SysDept::getParentId, bo.getParentId()) + .likeIfText(SysDept::getDeptName, bo.getDeptName()) + .likeIfText(SysDept::getDeptCategory, bo.getDeptCategory()) + .eqIfText(SysDept::getStatus, bo.getStatus()) + .betweenParams(SysDept::getCreateTime, params, "beginTime", "endTime") + .orderByAsc(SysDept::getAncestors, SysDept::getParentId, SysDept::getOrderNum, SysDept::getDeptId); if (ObjectUtil.isNotNull(bo.getBelongDeptId())) { //部门树搜索 - lqw.and(x -> { + builder.and(x -> { List deptIds = baseMapper.selectDeptAndChildById(bo.getBelongDeptId()); x.in(SysDept::getDeptId, deptIds); }); } - return lqw; + return builder.build(); } /** @@ -169,8 +164,10 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { if (ObjectUtil.isNull(dept)) { return null; } - SysDeptVo parentDept = baseMapper.selectVoOne(new LambdaQueryWrapper() - .select(SysDept::getDeptName).eq(SysDept::getDeptId, dept.getParentId())); + SysDeptVo parentDept = baseMapper.lambda() + .select(SysDept::getDeptName) + .eq(SysDept::getDeptId, dept.getParentId()) + .voOne(); dept.setParentName(ObjectUtils.notNullGetter(parentDept, SysDeptVo::getDeptName)); return dept; } @@ -183,10 +180,11 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { */ @Override public List selectDeptByIds(Collection deptIds) { - return baseMapper.selectDeptList(new LambdaQueryWrapper() + return baseMapper.selectDeptList(baseMapper.lambda() .select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getLeader) .eq(SysDept::getStatus, SystemConstants.NORMAL) - .in(CollUtil.isNotEmpty(deptIds), SysDept::getDeptId, deptIds)); + .in(CollUtil.isNotEmpty(deptIds), SysDept::getDeptId, deptIds) + .build()); } /** @@ -226,9 +224,10 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { */ @Override public List selectDeptsByList() { - List list = baseMapper.selectDeptList(new LambdaQueryWrapper() + List list = baseMapper.selectDeptList(baseMapper.lambda() .select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getParentId) - .eq(SysDept::getStatus, SystemConstants.NORMAL)); + .eq(SysDept::getStatus, SystemConstants.NORMAL) + .build()); return BeanUtil.copyToList(list, DeptDTO.class); } @@ -240,9 +239,10 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { */ @Override public long selectNormalChildrenDeptById(Long deptId) { - return baseMapper.selectCount(new LambdaQueryWrapper() + return baseMapper.lambda() .eq(SysDept::getStatus, SystemConstants.NORMAL) - .apply(DataBaseHelper.findInSet(deptId, "ancestors"))); + .findInSet(deptId, SysDept::getAncestors) + .count(); } /** @@ -253,8 +253,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { */ @Override public boolean hasChildByDeptId(Long deptId) { - return baseMapper.exists(new LambdaQueryWrapper() - .eq(SysDept::getParentId, deptId)); + return baseMapper.lambda().eq(SysDept::getParentId, deptId).exists(); } /** @@ -265,8 +264,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { */ @Override public boolean checkDeptExistUser(Long deptId) { - return userMapper.exists(new LambdaQueryWrapper() - .eq(SysUser::getDeptId, deptId)); + return userMapper.lambda().eq(SysUser::getDeptId, deptId).exists(); } /** @@ -277,10 +275,11 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { */ @Override public boolean checkDeptNameUnique(SysDeptBo dept) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysDept::getDeptName, dept.getDeptName()) .eq(SysDept::getParentId, dept.getParentId()) - .ne(ObjectUtil.isNotNull(dept.getDeptId()), SysDept::getDeptId, dept.getDeptId())); + .neIfPresent(SysDept::getDeptId, dept.getDeptId()) + .exists(); return !exist; } @@ -374,9 +373,10 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { private void updateParentDeptStatusNormal(SysDept dept) { String ancestors = dept.getAncestors(); Long[] deptIds = Convert.toLongArray(ancestors); - baseMapper.update(null, new LambdaUpdateWrapper() + baseMapper.lambda() .set(SysDept::getStatus, SystemConstants.NORMAL) - .in(SysDept::getDeptId, Arrays.asList(deptIds))); + .in(SysDept::getDeptId, Arrays.asList(deptIds)) + .update(); } /** @@ -387,8 +387,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { * @param oldAncestors 旧的父ID集合 */ private void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) { - List children = baseMapper.selectList(new LambdaQueryWrapper() - .apply(DataBaseHelper.findInSet(deptId, "ancestors"))); + List children = baseMapper.lambda().findInSet(deptId, SysDept::getAncestors).list(); List list = new ArrayList<>(); for (SysDept child : children) { SysDept dept = new SysDept(); @@ -430,11 +429,10 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { if (CollUtil.isEmpty(deptIds)) { return Collections.emptyMap(); } - List list = baseMapper.selectList( - new LambdaQueryWrapper() - .select(SysDept::getDeptId, SysDept::getDeptName) - .in(SysDept::getDeptId, deptIds) - ); + List list = baseMapper.lambda() + .select(SysDept::getDeptId, SysDept::getDeptName) + .in(SysDept::getDeptId, deptIds) + .list(); return StreamUtils.toMap(list, SysDept::getDeptId, SysDept::getDeptName); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java index 106e2e7e7..22af83a3f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java @@ -1,16 +1,14 @@ package org.dromara.system.service.impl; -import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.domain.PageResult; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.common.redis.utils.CacheUtils; import org.dromara.system.domain.SysDictData; import org.dromara.system.domain.bo.SysDictDataBo; @@ -67,12 +65,12 @@ public class SysDictDataServiceImpl implements ISysDictDataService { * @return 包含排序号、标签和字典类型条件的查询包装器 */ private LambdaQueryWrapper buildQueryWrapper(SysDictDataBo bo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(bo.getDictSort() != null, SysDictData::getDictSort, bo.getDictSort()); - lqw.like(StringUtils.isNotBlank(bo.getDictLabel()), SysDictData::getDictLabel, bo.getDictLabel()); - lqw.eq(StringUtils.isNotBlank(bo.getDictType()), SysDictData::getDictType, bo.getDictType()); - lqw.orderByAsc(SysDictData::getDictSort, SysDictData::getDictCode); - return lqw; + return QueryBuilder.lambda(SysDictData.class) + .eqIfPresent(SysDictData::getDictSort, bo.getDictSort()) + .likeIfText(SysDictData::getDictLabel, bo.getDictLabel()) + .eqIfText(SysDictData::getDictType, bo.getDictType()) + .orderByAsc(SysDictData::getDictSort, SysDictData::getDictCode) + .build(); } /** @@ -84,10 +82,11 @@ public class SysDictDataServiceImpl implements ISysDictDataService { */ @Override public String selectDictLabel(String dictType, String dictValue) { - return baseMapper.selectOne(new LambdaQueryWrapper() - .select(SysDictData::getDictLabel) - .eq(SysDictData::getDictType, dictType) - .eq(SysDictData::getDictValue, dictValue)) + return baseMapper.lambda() + .select(SysDictData::getDictLabel) + .eq(SysDictData::getDictType, dictType) + .eq(SysDictData::getDictValue, dictValue) + .one() .getDictLabel(); } @@ -156,10 +155,11 @@ public class SysDictDataServiceImpl implements ISysDictDataService { */ @Override public boolean checkDictDataUnique(SysDictDataBo dict) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysDictData::getDictType, dict.getDictType()) .eq(SysDictData::getDictValue, dict.getDictValue()) - .ne(ObjectUtil.isNotNull(dict.getDictCode()), SysDictData::getDictCode, dict.getDictCode())); + .neIfPresent(SysDictData::getDictCode, dict.getDictCode()) + .exists(); return !exist; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java index 89d6bcb70..d636fec91 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java @@ -4,8 +4,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; @@ -19,6 +17,7 @@ import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.common.redis.utils.CacheUtils; import org.dromara.system.domain.SysDictData; import org.dromara.system.domain.SysDictType; @@ -81,11 +80,11 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService * @return 包含名称、类型与创建时间区间的查询包装器 */ private LambdaQueryWrapper buildQueryWrapper(SysDictTypeBo bo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.like(StringUtils.isNotBlank(bo.getDictName()), SysDictType::getDictName, bo.getDictName()); - lqw.like(StringUtils.isNotBlank(bo.getDictType()), SysDictType::getDictType, bo.getDictType()); - lqw.orderByAsc(SysDictType::getDictId); - return lqw; + return QueryBuilder.lambda(SysDictType.class) + .likeIfText(SysDictType::getDictName, bo.getDictName()) + .likeIfText(SysDictType::getDictType, bo.getDictType()) + .orderByAsc(SysDictType::getDictId) + .build(); } /** @@ -131,7 +130,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService @Cacheable(cacheNames = CacheNames.SYS_DICT_TYPE, key = "#dictType") @Override public SysDictTypeVo selectDictTypeByType(String dictType) { - return baseMapper.selectVoOne(new LambdaQueryWrapper().eq(SysDictType::getDictType, dictType)); + return baseMapper.lambda().eq(SysDictType::getDictType, dictType).voOne(); } /** @@ -143,8 +142,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService public void deleteDictTypeByIds(Collection dictIds) { List list = baseMapper.selectByIds(dictIds); list.forEach(x -> { - boolean assigned = dictDataMapper.exists(new LambdaQueryWrapper() - .eq(SysDictData::getDictType, x.getDictType())); + boolean assigned = dictDataMapper.lambda().eq(SysDictData::getDictType, x.getDictType()).exists(); if (assigned) { throw new ServiceException("{}已分配,不能删除", x.getDictName()); } @@ -195,9 +193,10 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService public List updateDictType(SysDictTypeBo bo) { SysDictType dict = MapstructUtils.convert(bo, SysDictType.class); SysDictType oldDict = baseMapper.selectById(dict.getDictId()); - dictDataMapper.update(null, new LambdaUpdateWrapper() + dictDataMapper.lambda() .set(SysDictData::getDictType, dict.getDictType()) - .eq(SysDictData::getDictType, oldDict.getDictType())); + .eq(SysDictData::getDictType, oldDict.getDictType()) + .update(); int row = baseMapper.updateById(dict); if (row > 0) { CacheUtils.evict(CacheNames.SYS_DICT, oldDict.getDictType()); @@ -215,9 +214,10 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService */ @Override public boolean checkDictTypeUnique(SysDictTypeBo dictType) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysDictType::getDictType, dictType.getDictType()) - .ne(ObjectUtil.isNotNull(dictType.getDictId()), SysDictType::getDictId, dictType.getDictId())); + .neIfPresent(SysDictType::getDictId, dictType.getDictId()) + .exists(); return !exist; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLoginInfoServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLoginInfoServiceImpl.java index 6b445ca6a..7eae72fef 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLoginInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLoginInfoServiceImpl.java @@ -3,7 +3,6 @@ package org.dromara.system.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgentUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; @@ -16,6 +15,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.ip.AddressUtils; import org.dromara.common.log.event.LoginInfoEvent; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.mapper.LambdaCrudChainWrapper; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.domain.SysLoginInfo; import org.dromara.system.domain.bo.SysLoginInfoBo; @@ -122,13 +122,7 @@ public class SysLoginInfoServiceImpl implements ISysLoginInfoService { */ @Override public PageResult selectPageLoginInfoList(SysLoginInfoBo loginInfo, PageQuery pageQuery) { - Map params = loginInfo.getParams(); - LambdaQueryWrapper lqw = new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(loginInfo.getIpaddr()), SysLoginInfo::getIpaddr, loginInfo.getIpaddr()) - .eq(StringUtils.isNotBlank(loginInfo.getStatus()), SysLoginInfo::getStatus, loginInfo.getStatus()) - .like(StringUtils.isNotBlank(loginInfo.getUserName()), SysLoginInfo::getUserName, loginInfo.getUserName()) - .between(params.get("beginTime") != null && params.get("endTime") != null, - SysLoginInfo::getLoginTime, params.get("beginTime"), params.get("endTime")); + LambdaCrudChainWrapper lqw = buildQueryWrapper(loginInfo); if (StringUtils.isBlank(pageQuery.getOrderByColumn())) { lqw.orderByDesc(SysLoginInfo::getInfoId); } @@ -156,16 +150,25 @@ public class SysLoginInfoServiceImpl implements ISysLoginInfoService { */ @Override public List selectLoginInfoList(SysLoginInfoBo loginInfo) { - Map params = loginInfo.getParams(); - return baseMapper.selectVoList(new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(loginInfo.getIpaddr()), SysLoginInfo::getIpaddr, loginInfo.getIpaddr()) - .eq(StringUtils.isNotBlank(loginInfo.getStatus()), SysLoginInfo::getStatus, loginInfo.getStatus()) - .like(StringUtils.isNotBlank(loginInfo.getUserName()), SysLoginInfo::getUserName, loginInfo.getUserName()) - .between(params.get("beginTime") != null && params.get("endTime") != null, - SysLoginInfo::getLoginTime, params.get("beginTime"), params.get("endTime")) + return baseMapper.selectVoList(buildQueryWrapper(loginInfo) .orderByDesc(SysLoginInfo::getInfoId)); } + /** + * 构造登录日志列表查询条件。 + * + * @param loginInfo 登录日志筛选条件 + * @return 登录日志查询包装器 + */ + private LambdaCrudChainWrapper buildQueryWrapper(SysLoginInfoBo loginInfo) { + Map params = loginInfo.getParams(); + return baseMapper.lambda() + .likeIfText(SysLoginInfo::getIpaddr, loginInfo.getIpaddr()) + .eqIfText(SysLoginInfo::getStatus, loginInfo.getStatus()) + .likeIfText(SysLoginInfo::getUserName, loginInfo.getUserName()) + .betweenParams(SysLoginInfo::getLoginTime, params, "beginTime", "endTime"); + } + /** * 批量删除系统登录日志 * @@ -182,6 +185,6 @@ public class SysLoginInfoServiceImpl implements ISysLoginInfoService { */ @Override public void cleanLoginInfo() { - baseMapper.delete(new LambdaQueryWrapper<>()); + baseMapper.lambda().delete(); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java index 44b19e7ef..ca5483110 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java @@ -3,7 +3,6 @@ package org.dromara.system.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.Constants; @@ -64,15 +63,15 @@ public class SysMenuServiceImpl implements ISysMenuService { public List selectMenuList(SysMenuBo menu, Long userId) { // 管理员显示所有菜单信息 不是管理员 按用户id过滤菜单 if (LoginHelper.isSuperAdmin(userId)) { - return baseMapper.selectVoList( - new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName()) - .eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible()) - .eq(StringUtils.isNotBlank(menu.getStatus()), SysMenu::getStatus, menu.getStatus()) - .eq(StringUtils.isNotBlank(menu.getMenuType()), SysMenu::getMenuType, menu.getMenuType()) - .eq(ObjectUtil.isNotNull(menu.getParentId()), SysMenu::getParentId, menu.getParentId()) - .orderByAsc(SysMenu::getParentId) - .orderByAsc(SysMenu::getOrderNum)); + return baseMapper.lambda() + .likeIfText(SysMenu::getMenuName, menu.getMenuName()) + .eqIfText(SysMenu::getVisible, menu.getVisible()) + .eqIfText(SysMenu::getStatus, menu.getStatus()) + .eqIfText(SysMenu::getMenuType, menu.getMenuType()) + .eqIfPresent(SysMenu::getParentId, menu.getParentId()) + .orderByAsc(SysMenu::getParentId) + .orderByAsc(SysMenu::getOrderNum) + .voList(); } return baseMapper.selectMenuListByUserId(menu, userId); } @@ -246,7 +245,7 @@ public class SysMenuServiceImpl implements ISysMenuService { */ @Override public boolean hasChildByMenuId(Long menuId) { - return baseMapper.exists(new LambdaQueryWrapper().eq(SysMenu::getParentId, menuId)); + return baseMapper.lambda().eq(SysMenu::getParentId, menuId).exists(); } /** @@ -257,7 +256,10 @@ public class SysMenuServiceImpl implements ISysMenuService { */ @Override public boolean hasChildByMenuId(Collection menuIds) { - return baseMapper.exists(new LambdaQueryWrapper().in(SysMenu::getParentId, menuIds).notIn(SysMenu::getMenuId, menuIds)); + return baseMapper.lambda() + .in(SysMenu::getParentId, menuIds) + .notIn(SysMenu::getMenuId, menuIds) + .exists(); } /** @@ -268,7 +270,7 @@ public class SysMenuServiceImpl implements ISysMenuService { */ @Override public boolean checkMenuExistRole(Long menuId) { - return roleMenuMapper.exists(new LambdaQueryWrapper().eq(SysRoleMenu::getMenuId, menuId)); + return roleMenuMapper.lambda().eq(SysRoleMenu::getMenuId, menuId).exists(); } /** @@ -326,10 +328,11 @@ public class SysMenuServiceImpl implements ISysMenuService { */ @Override public boolean checkMenuNameUnique(SysMenuBo menu) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysMenu::getMenuName, menu.getMenuName()) .eq(SysMenu::getParentId, menu.getParentId()) - .ne(ObjectUtil.isNotNull(menu.getMenuId()), SysMenu::getMenuId, menu.getMenuId())); + .neIfPresent(SysMenu::getMenuId, menu.getMenuId()) + .exists(); return !exist; } @@ -349,12 +352,11 @@ public class SysMenuServiceImpl implements ISysMenuService { Long parentId = menu.getParentId(); String path = menu.getPath(); String routeName = StringUtils.isEmpty(menu.getRouteName()) ? path : menu.getRouteName(); - List sysMenuList = baseMapper.selectList( - new LambdaQueryWrapper() - .in(SysMenu::getMenuType, SystemConstants.TYPE_DIR, SystemConstants.TYPE_MENU) - .and(w -> - w.eq(SysMenu::getPath, path).or().eq(SysMenu::getPath, routeName) - )); + List sysMenuList = baseMapper.lambda() + .in(SysMenu::getMenuType, SystemConstants.TYPE_DIR, SystemConstants.TYPE_MENU) + .and(w -> { + w.eq(SysMenu::getPath, path).or().eq(SysMenu::getPath, routeName); + }).list(); for (SysMenu sysMenu : sysMenuList) { if (!sysMenu.getMenuId().equals(menuId)) { Long dbParentId = sysMenu.getParentId(); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMessageServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMessageServiceImpl.java index 7d2ddfac9..4fab4dafd 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMessageServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMessageServiceImpl.java @@ -2,8 +2,6 @@ package org.dromara.system.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.enums.PushSourceEnum; @@ -11,7 +9,6 @@ import org.dromara.common.core.enums.PushTypeEnum; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.json.utils.JsonUtils; -import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.mybatis.utils.IdGeneratorUtil; import org.dromara.common.push.helper.PushHelper; import org.dromara.system.api.MessageService; @@ -207,20 +204,19 @@ public class SysMessageServiceImpl implements ISysMessageService, MessageService * @return 消息VO列表 */ private List selectMessageList(String category, Long userId) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - // 分类匹配 - lqw.eq(SysMessage::getCategory, category); - // 仅查询30天内消息 - lqw.ge(SysMessage::getCreateTime, LocalDateTime.now().minusDays(BOX_DAYS)); - // 全局消息 或 当前用户在接收人范围内 - lqw.and(wrapper -> wrapper.eq(SysMessage::getSendUserIds, GLOBAL_USER_IDS) - .or() - .apply(DataBaseHelper.findInSet(userId, "send_user_ids"))); - // 按创建时间+消息ID倒序 - lqw.orderByDesc(SysMessage::getCreateTime, SysMessage::getMessageId); - // 分页查询(只查第一页,最多100条) - List list = baseMapper.selectList(new Page<>(1, BOX_LIMIT, false), lqw); - // 转换为VO并返回 + List list = baseMapper.lambda() + .eq(SysMessage::getCategory, category) + // 仅查询30天内消息 + .ge(SysMessage::getCreateTime, LocalDateTime.now().minusDays(BOX_DAYS)) + // 全局消息 或 当前用户在接收人范围内 + .and(wrapper -> { + wrapper.eq(SysMessage::getSendUserIds, GLOBAL_USER_IDS) + .or() + .findInSet(userId, SysMessage::getSendUserIds); + }) + .orderByDesc(SysMessage::getCreateTime, SysMessage::getMessageId) + // 分页查询(只查第一页,最多100条) + .list(new Page<>(1, BOX_LIMIT, false)); return list.stream().map(this::buildVo).toList(); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java index f201e4fa9..977a5c0bd 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java @@ -1,7 +1,6 @@ package org.dromara.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.PageResult; @@ -9,6 +8,8 @@ import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.ObjectUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.LambdaQueryBuilder; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.system.domain.SysNotice; import org.dromara.system.domain.SysUser; import org.dromara.system.domain.bo.SysNoticeBo; @@ -78,15 +79,14 @@ public class SysNoticeServiceImpl implements ISysNoticeService { * @return 包含标题、类型、创建人和排序条件的查询包装器 */ private LambdaQueryWrapper buildQueryWrapper(SysNoticeBo bo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.like(StringUtils.isNotBlank(bo.getNoticeTitle()), SysNotice::getNoticeTitle, bo.getNoticeTitle()); - lqw.eq(StringUtils.isNotBlank(bo.getNoticeType()), SysNotice::getNoticeType, bo.getNoticeType()); + LambdaQueryBuilder builder = QueryBuilder.lambda(SysNotice.class) + .likeIfText(SysNotice::getNoticeTitle, bo.getNoticeTitle()) + .eqIfText(SysNotice::getNoticeType, bo.getNoticeType()); if (StringUtils.isNotBlank(bo.getCreateByName())) { - SysUserVo sysUser = userMapper.selectVoOne(new LambdaQueryWrapper().eq(SysUser::getUserName, bo.getCreateByName())); - lqw.eq(SysNotice::getCreateBy, ObjectUtils.notNullGetter(sysUser, SysUserVo::getUserId)); + SysUserVo sysUser = userMapper.lambda().eq(SysUser::getUserName, bo.getCreateByName()).voOne(); + builder.eq(SysNotice::getCreateBy, ObjectUtils.notNullGetter(sysUser, SysUserVo::getUserId)); } - lqw.orderByAsc(SysNotice::getNoticeId); - return lqw; + return builder.orderByAsc(SysNotice::getNoticeId).build(); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java index 84ce7eb38..6c8bd86c7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java @@ -10,6 +10,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.ip.AddressUtils; import org.dromara.common.log.event.OperLogEvent; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.system.domain.SysOperLog; import org.dromara.system.domain.bo.SysOperLogBo; import org.dromara.system.domain.vo.SysOperLogVo; @@ -74,9 +75,9 @@ public class SysOperLogServiceImpl implements ISysOperLogService { */ private LambdaQueryWrapper buildQueryWrapper(SysOperLogBo operLog) { Map params = operLog.getParams(); - return new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(operLog.getOperIp()), SysOperLog::getOperIp, operLog.getOperIp()) - .like(StringUtils.isNotBlank(operLog.getTitle()), SysOperLog::getTitle, operLog.getTitle()) + return QueryBuilder.lambda(SysOperLog.class) + .likeIfText(SysOperLog::getOperIp, operLog.getOperIp()) + .likeIfText(SysOperLog::getTitle, operLog.getTitle()) .eq(operLog.getBusinessType() != null && operLog.getBusinessType() > 0, SysOperLog::getBusinessType, operLog.getBusinessType()) .func(f -> { @@ -84,17 +85,16 @@ public class SysOperLogServiceImpl implements ISysOperLogService { f.in(SysOperLog::getBusinessType, Arrays.asList(operLog.getBusinessTypes())); } }) - .eq(operLog.getStatus() != null, - SysOperLog::getStatus, operLog.getStatus()) - .like(StringUtils.isNotBlank(operLog.getOperName()), SysOperLog::getOperName, operLog.getOperName()) - .eq(operLog.getUserId() != null, SysOperLog::getUserId, operLog.getUserId()) - .eq(operLog.getDeptId() != null, SysOperLog::getDeptId, operLog.getDeptId()) - .eq(StringUtils.isNotBlank(operLog.getClientKey()), SysOperLog::getClientKey, operLog.getClientKey()) - .eq(StringUtils.isNotBlank(operLog.getDeviceType()), SysOperLog::getDeviceType, operLog.getDeviceType()) - .like(StringUtils.isNotBlank(operLog.getBrowser()), SysOperLog::getBrowser, operLog.getBrowser()) - .like(StringUtils.isNotBlank(operLog.getOs()), SysOperLog::getOs, operLog.getOs()) - .between(params.get("beginTime") != null && params.get("endTime") != null, - SysOperLog::getOperTime, params.get("beginTime"), params.get("endTime")); + .eqIfPresent(SysOperLog::getStatus, operLog.getStatus()) + .likeIfText(SysOperLog::getOperName, operLog.getOperName()) + .eqIfPresent(SysOperLog::getUserId, operLog.getUserId()) + .eqIfPresent(SysOperLog::getDeptId, operLog.getDeptId()) + .eqIfText(SysOperLog::getClientKey, operLog.getClientKey()) + .eqIfText(SysOperLog::getDeviceType, operLog.getDeviceType()) + .likeIfText(SysOperLog::getBrowser, operLog.getBrowser()) + .likeIfText(SysOperLog::getOs, operLog.getOs()) + .betweenParams(SysOperLog::getOperTime, params, "beginTime", "endTime") + .build(); } /** @@ -148,6 +148,6 @@ public class SysOperLogServiceImpl implements ISysOperLogService { */ @Override public void cleanOperLog() { - baseMapper.delete(new LambdaQueryWrapper<>()); + baseMapper.lambda().delete(); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssConfigServiceImpl.java index 21196e628..985301940 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssConfigServiceImpl.java @@ -3,8 +3,6 @@ package org.dromara.system.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -17,6 +15,7 @@ import org.dromara.common.core.utils.ObjectUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.common.oss.constant.OssConstant; import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.redis.utils.RedisUtils; @@ -94,12 +93,12 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { * @return 包含配置标识、桶名称和状态条件的查询包装器 */ private LambdaQueryWrapper buildQueryWrapper(SysOssConfigBo bo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(StringUtils.isNotBlank(bo.getConfigKey()), SysOssConfig::getConfigKey, bo.getConfigKey()); - lqw.like(StringUtils.isNotBlank(bo.getBucketName()), SysOssConfig::getBucketName, bo.getBucketName()); - lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysOssConfig::getStatus, bo.getStatus()); - lqw.orderByAsc(SysOssConfig::getOssConfigId); - return lqw; + return QueryBuilder.lambda(SysOssConfig.class) + .eqIfText(SysOssConfig::getConfigKey, bo.getConfigKey()) + .likeIfText(SysOssConfig::getBucketName, bo.getBucketName()) + .eqIfText(SysOssConfig::getStatus, bo.getStatus()) + .orderByAsc(SysOssConfig::getOssConfigId) + .build(); } /** @@ -131,13 +130,13 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { public Boolean updateByBo(SysOssConfigBo bo) { SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class); validEntityBeforeSave(config); - LambdaUpdateWrapper luw = new LambdaUpdateWrapper<>(); - luw.set(ObjectUtil.isNull(config.getPrefix()), SysOssConfig::getPrefix, ""); - luw.set(ObjectUtil.isNull(config.getRegion()), SysOssConfig::getRegion, ""); - luw.set(ObjectUtil.isNull(config.getExt1()), SysOssConfig::getExt1, ""); - luw.set(ObjectUtil.isNull(config.getRemark()), SysOssConfig::getRemark, ""); - luw.eq(SysOssConfig::getOssConfigId, config.getOssConfigId()); - boolean flag = baseMapper.update(config, luw) > 0; + boolean flag = baseMapper.lambda() + .set(ObjectUtil.isNull(config.getPrefix()), SysOssConfig::getPrefix, "") + .set(ObjectUtil.isNull(config.getRegion()), SysOssConfig::getRegion, "") + .set(ObjectUtil.isNull(config.getExt1()), SysOssConfig::getExt1, "") + .set(ObjectUtil.isNull(config.getRemark()), SysOssConfig::getRemark, "") + .eq(SysOssConfig::getOssConfigId, config.getOssConfigId()) + .update(config); if (flag) { // 从数据库查询完整的数据做缓存 config = baseMapper.selectById(config.getOssConfigId()); @@ -193,9 +192,10 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { */ private boolean checkConfigKeyUnique(SysOssConfig sysOssConfig) { long ossConfigId = ObjectUtils.notNull(sysOssConfig.getOssConfigId(), -1L); - SysOssConfig info = baseMapper.selectOne(new LambdaQueryWrapper() + SysOssConfig info = baseMapper.lambda() .select(SysOssConfig::getOssConfigId, SysOssConfig::getConfigKey) - .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey())); + .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey()) + .one(); if (ObjectUtil.isNotNull(info) && info.getOssConfigId() != ossConfigId) { return false; } @@ -212,8 +212,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { @Transactional(rollbackFor = Exception.class) public int updateOssConfigStatus(SysOssConfigBo bo) { SysOssConfig sysOssConfig = MapstructUtils.convert(bo, SysOssConfig.class); - int row = baseMapper.update(null, new LambdaUpdateWrapper() - .set(SysOssConfig::getStatus, SystemConstants.NO)); + int row = baseMapper.lambda().set(SysOssConfig::getStatus, SystemConstants.NO).updateCount(); row += baseMapper.updateById(sysOssConfig); if (row > 0) { RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, sysOssConfig.getConfigKey()); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java index 5606bfabb..7ad27d599 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -19,6 +18,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.file.FileUtils; import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.common.oss.client.OssClient; import org.dromara.common.oss.enums.AccessPolicy; import org.dromara.common.oss.factory.OssFactory; @@ -157,17 +157,16 @@ public class SysOssServiceImpl implements ISysOssService, OssService { */ private LambdaQueryWrapper buildQueryWrapper(SysOssBo bo) { Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.like(StringUtils.isNotBlank(bo.getFileName()), SysOss::getFileName, bo.getFileName()); - lqw.like(StringUtils.isNotBlank(bo.getOriginalName()), SysOss::getOriginalName, bo.getOriginalName()); - lqw.eq(StringUtils.isNotBlank(bo.getFileSuffix()), SysOss::getFileSuffix, bo.getFileSuffix()); - lqw.eq(StringUtils.isNotBlank(bo.getUrl()), SysOss::getUrl, bo.getUrl()); - lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, - SysOss::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); - lqw.eq(ObjectUtil.isNotNull(bo.getCreateBy()), SysOss::getCreateBy, bo.getCreateBy()); - lqw.eq(StringUtils.isNotBlank(bo.getService()), SysOss::getService, bo.getService()); - lqw.orderByAsc(SysOss::getOssId); - return lqw; + return QueryBuilder.lambda(SysOss.class) + .likeIfText(SysOss::getFileName, bo.getFileName()) + .likeIfText(SysOss::getOriginalName, bo.getOriginalName()) + .eqIfText(SysOss::getFileSuffix, bo.getFileSuffix()) + .eqIfText(SysOss::getUrl, bo.getUrl()) + .betweenParams(SysOss::getCreateTime, params, "beginCreateTime", "endCreateTime") + .eqIfPresent(SysOss::getCreateBy, bo.getCreateBy()) + .eqIfText(SysOss::getService, bo.getService()) + .orderByAsc(SysOss::getOssId) + .build(); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java index ce3d283a0..924fe2932 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -2,8 +2,7 @@ package org.dromara.system.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.SystemConstants; @@ -11,7 +10,6 @@ import org.dromara.common.core.domain.PageResult; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; -import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.system.api.PostService; import org.dromara.system.domain.SysPost; @@ -83,15 +81,14 @@ public class SysPostServiceImpl implements ISysPostService, PostService { * @param bo 查询条件对象 * @return 构建好的查询包装器 */ - private LambdaQueryWrapper buildQueryWrapper(SysPostBo bo) { + private Wrapper buildQueryWrapper(SysPostBo bo) { Map params = bo.getParams(); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.like(StringUtils.isNotBlank(bo.getPostCode()), SysPost::getPostCode, bo.getPostCode()) - .like(StringUtils.isNotBlank(bo.getPostCategory()), SysPost::getPostCategory, bo.getPostCategory()) - .like(StringUtils.isNotBlank(bo.getPostName()), SysPost::getPostName, bo.getPostName()) - .eq(StringUtils.isNotBlank(bo.getStatus()), SysPost::getStatus, bo.getStatus()) - .between(params.get("beginTime") != null && params.get("endTime") != null, - SysPost::getCreateTime, params.get("beginTime"), params.get("endTime")) + var wrapper = baseMapper.lambda() + .likeIfText(SysPost::getPostCode, bo.getPostCode()) + .likeIfText(SysPost::getPostCategory, bo.getPostCategory()) + .likeIfText(SysPost::getPostName, bo.getPostName()) + .eqIfText(SysPost::getStatus, bo.getStatus()) + .betweenParams(SysPost::getCreateTime, params, "beginTime", "endTime") .orderByAsc(SysPost::getPostSort); if (ObjectUtil.isNotNull(bo.getDeptId())) { //优先单部门搜索 @@ -113,7 +110,7 @@ public class SysPostServiceImpl implements ISysPostService, PostService { */ @Override public List selectPostAll() { - return baseMapper.selectVoList(new QueryWrapper<>()); + return baseMapper.lambda().voList(); } /** @@ -147,10 +144,11 @@ public class SysPostServiceImpl implements ISysPostService, PostService { */ @Override public List selectPostByIds(Collection postIds) { - return baseMapper.selectVoList(new LambdaQueryWrapper() + return baseMapper.lambda() .select(SysPost::getPostId, SysPost::getPostName, SysPost::getPostCode) .eq(SysPost::getStatus, SystemConstants.NORMAL) - .in(CollUtil.isNotEmpty(postIds), SysPost::getPostId, postIds)); + .in(CollUtil.isNotEmpty(postIds), SysPost::getPostId, postIds) + .voList(); } /** @@ -161,10 +159,11 @@ public class SysPostServiceImpl implements ISysPostService, PostService { */ @Override public boolean checkPostNameUnique(SysPostBo post) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysPost::getPostName, post.getPostName()) .eq(SysPost::getDeptId, post.getDeptId()) - .ne(ObjectUtil.isNotNull(post.getPostId()), SysPost::getPostId, post.getPostId())); + .neIfPresent(SysPost::getPostId, post.getPostId()) + .exists(); return !exist; } @@ -176,9 +175,10 @@ public class SysPostServiceImpl implements ISysPostService, PostService { */ @Override public boolean checkPostCodeUnique(SysPostBo post) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysPost::getPostCode, post.getPostCode()) - .ne(ObjectUtil.isNotNull(post.getPostId()), SysPost::getPostId, post.getPostId())); + .neIfPresent(SysPost::getPostId, post.getPostId()) + .exists(); return !exist; } @@ -190,7 +190,7 @@ public class SysPostServiceImpl implements ISysPostService, PostService { */ @Override public long countUserPostById(Long postId) { - return userPostMapper.selectCount(new LambdaQueryWrapper().eq(SysUserPost::getPostId, postId)); + return userPostMapper.lambda().eq(SysUserPost::getPostId, postId).count(); } /** @@ -201,7 +201,7 @@ public class SysPostServiceImpl implements ISysPostService, PostService { */ @Override public long countPostByDeptId(Long deptId) { - return baseMapper.selectCount(new LambdaQueryWrapper().eq(SysPost::getDeptId, deptId)); + return baseMapper.lambda().eq(SysPost::getDeptId, deptId).count(); } /** @@ -267,11 +267,10 @@ public class SysPostServiceImpl implements ISysPostService, PostService { if (CollUtil.isEmpty(postIds)) { return Collections.emptyMap(); } - List list = baseMapper.selectList( - new LambdaQueryWrapper() - .select(SysPost::getPostId, SysPost::getPostName) - .in(SysPost::getPostId, postIds) - ); + List list = baseMapper.lambda() + .select(SysPost::getPostId, SysPost::getPostName) + .in(SysPost::getPostId, postIds) + .list(); return StreamUtils.toMap(list, SysPost::getPostId, SysPost::getPostName); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index 0ed6aaca6..7f90187b5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -6,9 +6,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; @@ -19,6 +16,7 @@ import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.RoleService; import org.dromara.system.api.model.LoginUser; @@ -85,15 +83,14 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { */ private Wrapper buildQueryWrapper(SysRoleBo bo) { Map params = bo.getParams(); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(ObjectUtil.isNotNull(bo.getRoleId()), SysRole::getRoleId, bo.getRoleId()) - .like(StringUtils.isNotBlank(bo.getRoleName()), SysRole::getRoleName, bo.getRoleName()) - .eq(StringUtils.isNotBlank(bo.getStatus()), SysRole::getStatus, bo.getStatus()) - .like(StringUtils.isNotBlank(bo.getRoleKey()), SysRole::getRoleKey, bo.getRoleKey()) - .between(params.get("beginTime") != null && params.get("endTime") != null, - SysRole::getCreateTime, params.get("beginTime"), params.get("endTime")) - .orderByAsc(SysRole::getRoleSort).orderByAsc(SysRole::getCreateTime); - return wrapper; + return QueryBuilder.lambda(SysRole.class) + .eqIfPresent(SysRole::getRoleId, bo.getRoleId()) + .likeIfText(SysRole::getRoleName, bo.getRoleName()) + .eqIfText(SysRole::getStatus, bo.getStatus()) + .likeIfText(SysRole::getRoleKey, bo.getRoleKey()) + .betweenParams(SysRole::getCreateTime, params, "beginTime", "endTime") + .orderByAsc(SysRole::getRoleSort, SysRole::getCreateTime) + .build(); } /** @@ -186,9 +183,10 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { */ @Override public List selectRoleByIds(Collection roleIds) { - return baseMapper.selectRoleList(new LambdaQueryWrapper() + return baseMapper.selectRoleList(baseMapper.lambda() .eq(SysRole::getStatus, SystemConstants.NORMAL) - .in(CollUtil.isNotEmpty(roleIds), SysRole::getRoleId, roleIds)); + .inIfNotEmpty(SysRole::getRoleId, roleIds) + .build()); } /** @@ -199,9 +197,10 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { */ @Override public boolean checkRoleNameUnique(SysRoleBo role) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysRole::getRoleName, role.getRoleName()) - .ne(ObjectUtil.isNotNull(role.getRoleId()), SysRole::getRoleId, role.getRoleId())); + .neIfPresent(SysRole::getRoleId, role.getRoleId()) + .exists(); return !exist; } @@ -213,9 +212,10 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { */ @Override public boolean checkRoleKeyUnique(SysRoleBo role) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysRole::getRoleKey, role.getRoleKey()) - .ne(ObjectUtil.isNotNull(role.getRoleId()), SysRole::getRoleId, role.getRoleId())); + .neIfPresent(SysRole::getRoleId, role.getRoleId()) + .exists(); return !exist; } @@ -286,7 +286,7 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { */ @Override public long countUserRoleByRoleId(Long roleId) { - return userRoleMapper.selectCount(new LambdaQueryWrapper().eq(SysUserRole::getRoleId, roleId)); + return userRoleMapper.lambda().eq(SysUserRole::getRoleId, roleId).count(); } /** @@ -337,10 +337,10 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { // 更新权限相关配置字段(数据范围、树联动)。 baseMapper.updateById(role); // 先清理旧菜单权限,再重建。 - roleMenuMapper.delete(new LambdaQueryWrapper().eq(SysRoleMenu::getRoleId, role.getRoleId())); + roleMenuMapper.lambda().eq(SysRoleMenu::getRoleId, role.getRoleId()).delete(); insertRoleMenu(bo); // 先清理旧数据权限,再按当前配置重建。 - roleDeptMapper.delete(new LambdaQueryWrapper().eq(SysRoleDept::getRoleId, role.getRoleId())); + roleDeptMapper.lambda().eq(SysRoleDept::getRoleId, role.getRoleId()).delete(); return insertRoleDept(bo); } @@ -356,10 +356,10 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { if (SystemConstants.DISABLE.equals(status) && this.countUserRoleByRoleId(roleId) > 0) { throw new ServiceException("角色已分配,不能禁用!"); } - return baseMapper.update(null, - new LambdaUpdateWrapper() - .set(SysRole::getStatus, status) - .eq(SysRole::getRoleId, roleId)); + return baseMapper.lambda() + .set(SysRole::getStatus, status) + .eq(SysRole::getRoleId, roleId) + .updateCount(); } @@ -417,9 +417,9 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { @Transactional(rollbackFor = Exception.class) public int deleteRoleById(Long roleId) { // 删除角色与菜单关联 - roleMenuMapper.delete(new LambdaQueryWrapper().eq(SysRoleMenu::getRoleId, roleId)); + roleMenuMapper.lambda().eq(SysRoleMenu::getRoleId, roleId).delete(); // 删除角色与部门关联 - roleDeptMapper.delete(new LambdaQueryWrapper().eq(SysRoleDept::getRoleId, roleId)); + roleDeptMapper.lambda().eq(SysRoleDept::getRoleId, roleId).delete(); return baseMapper.deleteById(roleId); } @@ -442,9 +442,9 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { } } // 删除角色与菜单关联 - roleMenuMapper.delete(new LambdaQueryWrapper().in(SysRoleMenu::getRoleId, roleIds)); + roleMenuMapper.lambda().in(SysRoleMenu::getRoleId, roleIds).delete(); // 删除角色与部门关联 - roleDeptMapper.delete(new LambdaQueryWrapper().in(SysRoleDept::getRoleId, roleIds)); + roleDeptMapper.lambda().in(SysRoleDept::getRoleId, roleIds).delete(); return baseMapper.deleteByIds(roleIds); } @@ -459,9 +459,10 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { if (LoginHelper.getUserId().equals(userRole.getUserId())) { throw new ServiceException("不允许修改当前用户角色!"); } - int rows = userRoleMapper.delete(new LambdaQueryWrapper() + int rows = userRoleMapper.lambda() .eq(SysUserRole::getRoleId, userRole.getRoleId()) - .eq(SysUserRole::getUserId, userRole.getUserId())); + .eq(SysUserRole::getUserId, userRole.getUserId()) + .deleteCount(); if (rows > 0) { cleanOnlineUser(List.of(userRole.getUserId())); } @@ -480,9 +481,10 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { if (userIds.contains(LoginHelper.getUserId())) { throw new ServiceException("不允许修改当前用户角色!"); } - int rows = userRoleMapper.delete(new LambdaQueryWrapper() + int rows = userRoleMapper.lambda() .eq(SysUserRole::getRoleId, roleId) - .in(SysUserRole::getUserId, userIds)); + .in(SysUserRole::getUserId, userIds) + .deleteCount(); if (rows > 0) { cleanOnlineUser(userIds); } @@ -532,7 +534,7 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { @Override public void cleanOnlineUserByRole(Long roleId) { // 如果角色未绑定用户 直接返回 - Long num = userRoleMapper.selectCount(new LambdaQueryWrapper().eq(SysUserRole::getRoleId, roleId)); + Long num = userRoleMapper.lambda().eq(SysUserRole::getRoleId, roleId).count(); if (num == 0) { return; } @@ -607,11 +609,10 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { if (CollUtil.isEmpty(roleIds)) { return Collections.emptyMap(); } - List list = baseMapper.selectList( - new LambdaQueryWrapper() - .select(SysRole::getRoleId, SysRole::getRoleName) - .in(SysRole::getRoleId, roleIds) - ); + List list = baseMapper.lambda() + .select(SysRole::getRoleId, SysRole::getRoleName) + .in(SysRole::getRoleId, roleIds) + .list(); return StreamUtils.toMap(list, SysRole::getRoleId, SysRole::getRoleName); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java index d3441b67e..b58b1d187 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java @@ -1,10 +1,7 @@ package org.dromara.system.service.impl; -import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; import org.dromara.system.domain.SysSocial; import org.dromara.system.domain.bo.SysSocialBo; import org.dromara.system.domain.vo.SysSocialVo; @@ -46,11 +43,11 @@ public class SysSocialServiceImpl implements ISysSocialService { */ @Override public List queryList(SysSocialBo bo) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper() - .eq(ObjectUtil.isNotNull(bo.getUserId()), SysSocial::getUserId, bo.getUserId()) - .eq(StringUtils.isNotBlank(bo.getAuthId()), SysSocial::getAuthId, bo.getAuthId()) - .eq(StringUtils.isNotBlank(bo.getSource()), SysSocial::getSource, bo.getSource()); - return baseMapper.selectVoList(lqw); + return baseMapper.lambda() + .eqIfPresent(SysSocial::getUserId, bo.getUserId()) + .eqIfText(SysSocial::getAuthId, bo.getAuthId()) + .eqIfText(SysSocial::getSource, bo.getSource()) + .voList(); } /** @@ -61,7 +58,7 @@ public class SysSocialServiceImpl implements ISysSocialService { */ @Override public List queryListByUserId(Long userId) { - return baseMapper.selectVoList(new LambdaQueryWrapper().eq(SysSocial::getUserId, userId)); + return baseMapper.lambda().eq(SysSocial::getUserId, userId).voList(); } @@ -129,7 +126,7 @@ public class SysSocialServiceImpl implements ISysSocialService { */ @Override public List selectByAuthId(String authId) { - return baseMapper.selectVoList(new LambdaQueryWrapper().eq(SysSocial::getAuthId, authId)); + return baseMapper.lambda().eq(SysSocial::getAuthId, authId).voList(); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index a73217bb6..52a09c868 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -7,8 +7,6 @@ import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -18,6 +16,7 @@ import org.dromara.common.core.domain.PageResult; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.*; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.UserService; import org.dromara.system.api.domain.UserDTO; @@ -88,20 +87,21 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ private Wrapper buildQueryWrapper(SysUserBo user) { Map params = user.getParams(); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(SysUser::getDelFlag, SystemConstants.NORMAL) - .eq(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId()) + LambdaQueryWrapper wrapper = QueryBuilder.lambda(SysUser.class) + .eq(SysUser::getDelFlag, SystemConstants.NORMAL) + .eqIfPresent(SysUser::getUserId, user.getUserId()) .in(StringUtils.isNotBlank(user.getUserIds()), SysUser::getUserId, StringUtils.splitTo(user.getUserIds(), Convert::toLong)) - .like(StringUtils.isNotBlank(user.getUserName()), SysUser::getUserName, user.getUserName()) - .like(StringUtils.isNotBlank(user.getNickName()), SysUser::getNickName, user.getNickName()) - .eq(StringUtils.isNotBlank(user.getStatus()), SysUser::getStatus, user.getStatus()) - .like(StringUtils.isNotBlank(user.getPhoneNumber()), SysUser::getPhoneNumber, user.getPhoneNumber()) - .between(params.get("beginTime") != null && params.get("endTime") != null, - SysUser::getCreateTime, params.get("beginTime"), params.get("endTime")) + .likeIfText(SysUser::getUserName, user.getUserName()) + .likeIfText(SysUser::getNickName, user.getNickName()) + .eqIfText(SysUser::getStatus, user.getStatus()) + .likeIfText(SysUser::getPhoneNumber, user.getPhoneNumber()) + .betweenParams(SysUser::getCreateTime, params, "beginTime", "endTime") .and(ObjectUtil.isNotNull(user.getDeptId()), w -> { List ids = deptMapper.selectDeptAndChildById(user.getDeptId()); w.in(SysUser::getDeptId, ids); - }).orderByAsc(SysUser::getUserId); + }) + .orderByAsc(SysUser::getUserId) + .build(); if (StringUtils.isNotBlank(user.getExcludeUserIds())) { wrapper.notIn(SysUser::getUserId, StringUtils.splitTo(user.getExcludeUserIds(), Convert::toLong)); } @@ -141,7 +141,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public SysUserVo selectUserByUserName(String userName) { - return baseMapper.selectVoOne(new LambdaQueryWrapper().eq(SysUser::getUserName, userName)); + return baseMapper.lambda().eq(SysUser::getUserName, userName).voOne(); } /** @@ -152,7 +152,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public SysUserVo selectUserByPhoneNumber(String phoneNumber) { - return baseMapper.selectVoOne(new LambdaQueryWrapper().eq(SysUser::getPhoneNumber, phoneNumber)); + return baseMapper.lambda().eq(SysUser::getPhoneNumber, phoneNumber).voOne(); } /** @@ -180,11 +180,12 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public List selectUserByIds(Collection userIds, Long deptId) { - return baseMapper.selectUserList(new LambdaQueryWrapper() + return baseMapper.selectUserList(baseMapper.lambda() .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName) .eq(SysUser::getStatus, SystemConstants.NORMAL) - .eq(ObjectUtil.isNotNull(deptId), SysUser::getDeptId, deptId) - .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); + .eqIfPresent(SysUser::getDeptId, deptId) + .inIfNotEmpty(SysUser::getUserId, userIds) + .build()); } /** @@ -225,9 +226,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public boolean checkUserNameUnique(SysUserBo user) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysUser::getUserName, user.getUserName()) - .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); + .neIfPresent(SysUser::getUserId, user.getUserId()) + .exists(); return !exist; } @@ -238,9 +240,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public boolean checkPhoneUnique(SysUserBo user) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysUser::getPhoneNumber, user.getPhoneNumber()) - .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); + .neIfPresent(SysUser::getUserId, user.getUserId()) + .exists(); return !exist; } @@ -251,9 +254,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public boolean checkEmailUnique(SysUserBo user) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(SysUser::getEmail, user.getEmail()) - .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); + .neIfPresent(SysUser::getUserId, user.getUserId()) + .exists(); return !exist; } @@ -365,10 +369,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public int updateUserStatus(Long userId, String status) { - return baseMapper.update(null, - new LambdaUpdateWrapper() - .set(SysUser::getStatus, status) - .eq(SysUser::getUserId, userId)); + return baseMapper.lambda() + .set(SysUser::getStatus, status) + .eq(SysUser::getUserId, userId) + .updateCount(); } /** @@ -380,13 +384,13 @@ public class SysUserServiceImpl implements ISysUserService, UserService { @CacheEvict(cacheNames = CacheNames.SYS_NICKNAME, key = "#user.userId") @Override public int updateUserProfile(SysUserBo user) { - return baseMapper.update(null, - new LambdaUpdateWrapper() - .set(ObjectUtil.isNotNull(user.getNickName()), SysUser::getNickName, user.getNickName()) - .set(SysUser::getPhoneNumber, user.getPhoneNumber()) - .set(SysUser::getEmail, user.getEmail()) - .set(SysUser::getGender, user.getGender()) - .eq(SysUser::getUserId, user.getUserId())); + return baseMapper.lambda() + .setIfPresent(SysUser::getNickName, user.getNickName()) + .set(SysUser::getPhoneNumber, user.getPhoneNumber()) + .set(SysUser::getEmail, user.getEmail()) + .set(SysUser::getGender, user.getGender()) + .eq(SysUser::getUserId, user.getUserId()) + .updateCount(); } /** @@ -398,10 +402,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public boolean updateUserAvatar(Long userId, Long avatar) { - return baseMapper.update(null, - new LambdaUpdateWrapper() - .set(SysUser::getAvatar, avatar) - .eq(SysUser::getUserId, userId)) > 0; + return baseMapper.lambda() + .set(SysUser::getAvatar, avatar) + .eq(SysUser::getUserId, userId) + .update(); } /** @@ -413,10 +417,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public int resetUserPwd(Long userId, String password) { - return baseMapper.update(null, - new LambdaUpdateWrapper() - .set(SysUser::getPassword, password) - .eq(SysUser::getUserId, userId)); + return baseMapper.lambda() + .set(SysUser::getPassword, password) + .eq(SysUser::getUserId, userId) + .updateCount(); } /** @@ -449,7 +453,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { // 是否清除旧的用户岗位绑定 if (clear) { - userPostMapper.delete(new LambdaQueryWrapper().eq(SysUserPost::getUserId, user.getUserId())); + userPostMapper.lambda().eq(SysUserPost::getUserId, user.getUserId()).delete(); } // 构建用户岗位关联列表并批量插入 @@ -494,7 +498,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { // 是否清除原有绑定 if (clear) { - userRoleMapper.delete(new LambdaQueryWrapper().eq(SysUserRole::getUserId, userId)); + userRoleMapper.lambda().eq(SysUserRole::getUserId, userId).delete(); } // 批量插入用户-角色关联 @@ -518,9 +522,9 @@ public class SysUserServiceImpl implements ISysUserService, UserService { @Transactional(rollbackFor = Exception.class) public int deleteUserById(Long userId) { // 删除用户与角色关联 - userRoleMapper.delete(new LambdaQueryWrapper().eq(SysUserRole::getUserId, userId)); + userRoleMapper.lambda().eq(SysUserRole::getUserId, userId).delete(); // 删除用户与岗位表 - userPostMapper.delete(new LambdaQueryWrapper().eq(SysUserPost::getUserId, userId)); + userPostMapper.lambda().eq(SysUserPost::getUserId, userId).delete(); // 防止更新失败导致的数据删除 int flag = baseMapper.deleteById(userId); if (flag < 1) { @@ -544,9 +548,9 @@ public class SysUserServiceImpl implements ISysUserService, UserService { } List ids = List.of(userIds); // 删除用户与角色关联 - userRoleMapper.delete(new LambdaQueryWrapper().in(SysUserRole::getUserId, ids)); + userRoleMapper.lambda().in(SysUserRole::getUserId, ids).delete(); // 删除用户与岗位表 - userPostMapper.delete(new LambdaQueryWrapper().in(SysUserPost::getUserId, ids)); + userPostMapper.lambda().in(SysUserPost::getUserId, ids).delete(); // 防止更新失败导致的数据删除 int flag = baseMapper.deleteByIds(ids); if (flag < 1) { @@ -563,10 +567,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public List selectUserListByDept(Long deptId) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(SysUser::getDeptId, deptId); - lqw.orderByAsc(SysUser::getUserId); - return baseMapper.selectVoList(lqw); + return baseMapper.lambda() + .eq(SysUser::getDeptId, deptId) + .orderByAsc(SysUser::getUserId) + .voList(); } /** @@ -578,8 +582,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { @Cacheable(cacheNames = CacheNames.SYS_USER_NAME, key = "#userId") @Override public String selectUserNameById(Long userId) { - SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper() - .select(SysUser::getUserName).eq(SysUser::getUserId, userId)); + SysUser sysUser = baseMapper.lambda() + .select(SysUser::getUserName) + .eq(SysUser::getUserId, userId) + .one(); return ObjectUtils.notNullGetter(sysUser, SysUser::getUserName); } @@ -592,8 +598,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { @Override @Cacheable(cacheNames = CacheNames.SYS_NICKNAME, key = "#userId") public String selectNicknameById(Long userId) { - SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper() - .select(SysUser::getNickName).eq(SysUser::getUserId, userId)); + SysUser sysUser = baseMapper.lambda() + .select(SysUser::getNickName) + .eq(SysUser::getUserId, userId) + .one(); return ObjectUtils.notNullGetter(sysUser, SysUser::getNickName); } @@ -623,8 +631,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public String selectPhonenumberById(Long userId) { - SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper() - .select(SysUser::getPhoneNumber).eq(SysUser::getUserId, userId)); + SysUser sysUser = baseMapper.lambda() + .select(SysUser::getPhoneNumber) + .eq(SysUser::getUserId, userId) + .one(); return ObjectUtils.notNullGetter(sysUser, SysUser::getPhoneNumber); } @@ -636,8 +646,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public String selectEmailById(Long userId) { - SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper() - .select(SysUser::getEmail).eq(SysUser::getUserId, userId)); + SysUser sysUser = baseMapper.lambda() + .select(SysUser::getEmail) + .eq(SysUser::getUserId, userId) + .one(); return ObjectUtils.notNullGetter(sysUser, SysUser::getEmail); } @@ -649,13 +661,14 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public UserDTO selectById(Long userId) { - SysUserVo vo = baseMapper.selectVoOne(new LambdaQueryWrapper() + SysUserVo vo = baseMapper.lambda() .select(SysUser::getUserId, SysUser::getDeptId, SysUser::getUserName, SysUser::getNickName, SysUser::getUserType, SysUser::getEmail, SysUser::getPhoneNumber, SysUser::getGender, SysUser::getStatus, SysUser::getCreateTime) .eq(SysUser::getStatus, SystemConstants.NORMAL) - .eq(SysUser::getUserId, userId)); + .eq(SysUser::getUserId, userId) + .voOne(); return BeanUtil.copyProperties(vo, UserDTO.class); } @@ -670,13 +683,14 @@ public class SysUserServiceImpl implements ISysUserService, UserService { if (CollUtil.isEmpty(userIds)) { return List.of(); } - List list = baseMapper.selectVoList(new LambdaQueryWrapper() + List list = baseMapper.lambda() .select(SysUser::getUserId, SysUser::getDeptId, SysUser::getUserName, SysUser::getNickName, SysUser::getUserType, SysUser::getEmail, SysUser::getPhoneNumber, SysUser::getGender, SysUser::getStatus, SysUser::getCreateTime) .eq(SysUser::getStatus, SystemConstants.NORMAL) - .in(SysUser::getUserId, userIds)); + .in(SysUser::getUserId, userIds) + .voList(); return BeanUtil.copyToList(list, UserDTO.class); } @@ -691,8 +705,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { if (CollUtil.isEmpty(roleIds)) { return List.of(); } - List userRoles = userRoleMapper.selectList( - new LambdaQueryWrapper().in(SysUserRole::getRoleId, roleIds)); + List userRoles = userRoleMapper.lambda().in(SysUserRole::getRoleId, roleIds).list(); return StreamUtils.toList(userRoles, SysUserRole::getUserId); } @@ -709,8 +722,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { } // 通过角色ID获取用户角色信息 - List userRoles = userRoleMapper.selectList( - new LambdaQueryWrapper().in(SysUserRole::getRoleId, roleIds)); + List userRoles = userRoleMapper.lambda().in(SysUserRole::getRoleId, roleIds).list(); // 获取用户ID列表 Set userIds = StreamUtils.toSet(userRoles, SysUserRole::getUserId); @@ -729,10 +741,11 @@ public class SysUserServiceImpl implements ISysUserService, UserService { if (CollUtil.isEmpty(deptIds)) { return List.of(); } - List list = baseMapper.selectVoList(new LambdaQueryWrapper() + List list = baseMapper.lambda() .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhoneNumber) .eq(SysUser::getStatus, SystemConstants.NORMAL) - .in(SysUser::getDeptId, deptIds)); + .in(SysUser::getDeptId, deptIds) + .voList(); return BeanUtil.copyToList(list, UserDTO.class); } @@ -749,8 +762,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { } // 通过岗位ID获取用户岗位信息 - List userPosts = userPostMapper.selectList( - new LambdaQueryWrapper().in(SysUserPost::getPostId, postIds)); + List userPosts = userPostMapper.lambda().in(SysUserPost::getPostId, postIds).list(); // 获取用户ID列表 Set userIds = StreamUtils.toSet(userPosts, SysUserPost::getUserId); @@ -769,11 +781,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { if (CollUtil.isEmpty(userIds)) { return Collections.emptyMap(); } - List list = baseMapper.selectList( - new LambdaQueryWrapper() - .select(SysUser::getUserId, SysUser::getNickName) - .in(SysUser::getUserId, userIds) - ); + List list = baseMapper.lambda() + .select(SysUser::getUserId, SysUser::getNickName) + .in(SysUser::getUserId, userIds) + .list(); return StreamUtils.toMap(list, SysUser::getUserId, SysUser::getNickName); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java index c7a3d2642..d618fafea 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java @@ -1,8 +1,6 @@ package org.dromara.workflow.mapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; -import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.workflow.domain.FlowCategory; import org.dromara.workflow.domain.vo.FlowCategoryVo; @@ -25,9 +23,10 @@ public interface FlwCategoryMapper extends BaseMapperPlus selectListByParentId(Long parentId) { - return this.selectList(new LambdaQueryWrapper() + return this.lambda() .select(FlowCategory::getCategoryId) - .apply(DataBaseHelper.findInSet(parentId, "ancestors"))); + .findInSet(parentId, FlowCategory::getAncestors) + .list(); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java index 4b9a9785e..a895f57e6 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceBizExtMapper.java @@ -1,7 +1,6 @@ package org.dromara.workflow.mapper; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.workflow.domain.FlowInstanceBizExt; @@ -23,8 +22,9 @@ public interface FlwInstanceBizExtMapper extends BaseMapperPlus() - .eq(FlowInstanceBizExt::getInstanceId, entity.getInstanceId())); + FlowInstanceBizExt exist = this.lambda() + .eq(FlowInstanceBizExt::getInstanceId, entity.getInstanceId()) + .one(); if (ObjectUtil.isNotNull(exist)) { // 存在就带上主键更新 @@ -43,8 +43,7 @@ public interface FlwInstanceBizExtMapper extends BaseMapperPlus() - .eq(FlowInstanceBizExt::getInstanceId, instanceId)); + return this.lambda().eq(FlowInstanceBizExt::getInstanceId, instanceId).deleteCount(); } /** @@ -54,8 +53,7 @@ public interface FlwInstanceBizExtMapper extends BaseMapperPlus instanceIds) { - return this.delete(new LambdaQueryWrapper() - .in(FlowInstanceBizExt::getInstanceId, instanceIds)); + return this.lambda().in(FlowInstanceBizExt::getInstanceId, instanceIds).deleteCount(); } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java index 8ca553673..3b3eeaabb 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java @@ -10,7 +10,6 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.*; -import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.warm.flow.core.service.DefService; import org.dromara.warm.flow.orm.entity.FlowDefinition; import org.dromara.warm.flow.ui.service.CategoryService; @@ -64,8 +63,10 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService, CategoryServ if (ObjectUtil.isNull(categoryId)) { return null; } - FlowCategory category = baseMapper.selectOne(new LambdaQueryWrapper() - .select(FlowCategory::getCategoryName).eq(FlowCategory::getCategoryId, categoryId)); + FlowCategory category = baseMapper.lambda() + .select(FlowCategory::getCategoryName) + .eq(FlowCategory::getCategoryId, categoryId) + .one(); return ObjectUtils.notNullGetter(category, FlowCategory::getCategoryName); } @@ -80,9 +81,10 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService, CategoryServ if (CollUtil.isEmpty(categoryIds)) { return Collections.emptyMap(); } - List list = baseMapper.selectList(new LambdaQueryWrapper() + List list = baseMapper.lambda() .select(FlowCategory::getCategoryId, FlowCategory::getCategoryName) - .in(FlowCategory::getCategoryId, categoryIds)); + .in(FlowCategory::getCategoryId, categoryIds) + .list(); return StreamUtils.toMap(list, FlowCategory::getCategoryId, FlowCategory::getCategoryName); } @@ -145,10 +147,11 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService, CategoryServ */ @Override public boolean checkCategoryNameUnique(FlowCategoryBo category) { - boolean exist = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.lambda() .eq(FlowCategory::getCategoryName, category.getCategoryName()) .eq(FlowCategory::getParentId, category.getParentId()) - .ne(ObjectUtil.isNotNull(category.getCategoryId()), FlowCategory::getCategoryId, category.getCategoryId())); + .neIfPresent(FlowCategory::getCategoryId, category.getCategoryId()) + .exists(); return !exist; } @@ -173,8 +176,7 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService, CategoryServ */ @Override public boolean hasChildByCategoryId(Long categoryId) { - return baseMapper.exists(new LambdaQueryWrapper() - .eq(FlowCategory::getParentId, categoryId)); + return baseMapper.lambda().eq(FlowCategory::getParentId, categoryId).exists(); } /** @@ -255,8 +257,9 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService, CategoryServ * @param oldAncestors 旧的父ID集合 */ private void updateCategoryChildren(Long categoryId, String newAncestors, String oldAncestors) { - List children = baseMapper.selectList(new LambdaQueryWrapper() - .apply(DataBaseHelper.findInSet(categoryId, "ancestors"))); + List children = baseMapper.lambda() + .findInSet(categoryId, FlowCategory::getAncestors) + .list(); List list = new ArrayList<>(); for (FlowCategory child : children) { FlowCategory category = new FlowCategory(); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java index 69ff0de74..537ab0786 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java @@ -16,6 +16,7 @@ import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.warm.flow.core.dto.DefJson; import org.dromara.warm.flow.core.enums.NodeType; import org.dromara.warm.flow.core.enums.PublishStatus; @@ -121,7 +122,8 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService { @Override @Transactional(rollbackFor = Exception.class) public boolean publish(Long id) { - List flowNodes = flowNodeMapper.selectList(new LambdaQueryWrapper().eq(FlowNode::getDefinitionId, id)); + List flowNodes = flowNodeMapper.selectList( + QueryBuilder.lambda(FlowNode.class).eq(FlowNode::getDefinitionId, id).build()); List errorMsg = new ArrayList<>(); if (CollUtil.isNotEmpty(flowNodes)) { String applyNodeCode = flwCommonService.applyNodeCode(id); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index a4a10c1f2..87be5598a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -4,8 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; @@ -17,6 +16,7 @@ import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.warm.flow.core.FlowEngine; import org.dromara.warm.flow.core.constant.ExceptionCons; @@ -185,7 +185,10 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { */ @Override public FlowInstance selectInstByBusinessId(String businessId) { - return flowInstanceMapper.selectOne(new LambdaQueryWrapper().eq(FlowInstance::getBusinessId, businessId)); + return flowInstanceMapper.selectOne( + QueryBuilder.lambda(FlowInstance.class) + .eq(FlowInstance::getBusinessId, businessId) + .build()); } /** @@ -219,7 +222,10 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { @Override @Transactional(rollbackFor = Exception.class) public boolean deleteByBusinessIds(List businessIds) { - List flowInstances = flowInstanceMapper.selectList(new LambdaQueryWrapper().in(FlowInstance::getBusinessId, businessIds)); + List flowInstances = flowInstanceMapper.selectList( + QueryBuilder.lambda(FlowInstance.class) + .in(FlowInstance::getBusinessId, businessIds) + .build()); if (CollUtil.isEmpty(flowInstances)) { log.warn("未找到对应的流程实例信息,无法执行删除操作。"); return false; @@ -393,10 +399,11 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { // 再组装历史任务(已处理任务) List hisTaskVos = new ArrayList<>(); List hisTasks = flowHisTaskMapper.selectList( - new LambdaQueryWrapper() + QueryBuilder.lambda(FlowHisTask.class) .eq(FlowHisTask::getInstanceId, instanceId) .eq(FlowHisTask::getNodeType, NodeType.BETWEEN.getKey()) .orderByDesc(FlowHisTask::getUpdateTime) + .build() ); if (CollUtil.isNotEmpty(hisTasks)) { hisTaskVos = BeanUtil.copyToList(hisTasks, FlowHisTaskVo.class); @@ -418,10 +425,9 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { */ @Override public void updateStatus(Long instanceId, String status) { - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.set(FlowInstance::getFlowStatus, status); - wrapper.eq(FlowInstance::getId, instanceId); - flowInstanceMapper.update(wrapper); + flowInstanceMapper.update(Wrappers.lambdaUpdate(FlowInstance.class) + .set(FlowInstance::getFlowStatus, status) + .eq(FlowInstance::getId, instanceId)); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java index 535e3cdd4..5745df8bf 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java @@ -1,7 +1,6 @@ package org.dromara.workflow.service.impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -135,9 +134,10 @@ public class FlwSpelServiceImpl implements IFlwSpelService { */ private void validEntityBeforeSave(FlowSpel entity){ if (StringUtils.isNotBlank(entity.getViewSpel())) { - boolean exists = baseMapper.exists(new LambdaQueryWrapper() + boolean exists = baseMapper.lambda() .eq(FlowSpel::getViewSpel, entity.getViewSpel()) - .ne(ObjectUtil.isNotNull(entity.getId()), FlowSpel::getId, entity.getId())); + .neIfPresent(FlowSpel::getId, entity.getId()) + .exists(); if (exists) { throw new ServiceException("SpEL表达式已存在,请勿重复添加"); } @@ -193,11 +193,10 @@ public class FlwSpelServiceImpl implements IFlwSpelService { if (CollUtil.isEmpty(viewSpels)) { return Collections.emptyMap(); } - List list = baseMapper.selectList( - new LambdaQueryWrapper() - .select(FlowSpel::getViewSpel, FlowSpel::getRemark) - .in(FlowSpel::getViewSpel, viewSpels) - ); + List list = baseMapper.lambda() + .select(FlowSpel::getViewSpel, FlowSpel::getRemark) + .in(FlowSpel::getViewSpel, viewSpels) + .list(); return StreamUtils.toMap(list, FlowSpel::getViewSpel, x -> StringUtils.isEmpty(x.getRemark()) ? "" : x.getRemark() ); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 9fdf929b2..42773bcd7 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -7,7 +7,6 @@ import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.lock.annotation.Lock4j; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -21,6 +20,7 @@ import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.common.mybatis.utils.IdGeneratorUtil; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.domain.UserDTO; @@ -121,8 +121,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { FlowInstanceBizExt bizExt = startProcessBo.getBizExt(); // 获取已有流程实例 - FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class) - .eq(FlowInstance::getBusinessId, businessId)); + FlowInstance flowInstance = flowInstanceMapper.selectOne(QueryBuilder.lambda(FlowInstance.class) + .eq(FlowInstance::getBusinessId, businessId) + .build()); if (ObjectUtil.isNotNull(flowInstance)) { // 已存在流程 @@ -339,8 +340,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } // 添加抄送人记录 FlowHisTask flowHisTask = flowHisTaskMapper.selectList( - new LambdaQueryWrapper<>(FlowHisTask.class) - .eq(FlowHisTask::getTaskId, task.getId())).get(0); + QueryBuilder.lambda(FlowHisTask.class) + .eq(FlowHisTask::getTaskId, task.getId()) + .build()).get(0); FlowNode flowNode = new FlowNode(); flowNode.setNodeCode(flowHisTask.getTargetNodeCode()); flowNode.setNodeName(flowHisTask.getTargetNodeName()); @@ -599,7 +601,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public List selectByIdList(Collection taskIdList) { - return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).in(FlowTask::getId, taskIdList)); + return flowTaskMapper.selectList(QueryBuilder.lambda(FlowTask.class) + .in(FlowTask::getId, taskIdList) + .build()); } /** @@ -713,7 +717,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public FlowHisTask selectHisTaskById(Long taskId) { - return flowHisTaskMapper.selectOne(new LambdaQueryWrapper<>(FlowHisTask.class).eq(FlowHisTask::getId, taskId)); + return flowHisTaskMapper.selectOne(QueryBuilder.lambda(FlowHisTask.class) + .eq(FlowHisTask::getId, taskId) + .build()); } /** @@ -724,7 +730,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public List selectByInstId(Long instanceId) { - return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).eq(FlowTask::getInstanceId, instanceId)); + return flowTaskMapper.selectList(QueryBuilder.lambda(FlowTask.class) + .eq(FlowTask::getInstanceId, instanceId) + .build()); } /** @@ -735,7 +743,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public List selectByInstIds(Collection instanceIds) { - return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).in(FlowTask::getInstanceId, instanceIds)); + return flowTaskMapper.selectList(QueryBuilder.lambda(FlowTask.class) + .in(FlowTask::getInstanceId, instanceIds) + .build()); } /** @@ -746,7 +756,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public boolean isTaskEnd(Long instanceId) { - boolean exists = flowTaskMapper.exists(new LambdaQueryWrapper().eq(FlowTask::getInstanceId, instanceId)); + boolean exists = flowTaskMapper.exists(QueryBuilder.lambda(FlowTask.class) + .eq(FlowTask::getInstanceId, instanceId) + .build()); return !exists; } @@ -897,9 +909,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public FlowNode getByNodeCode(String nodeCode, Long definitionId) { - return flowNodeMapper.selectOne(new LambdaQueryWrapper() + return flowNodeMapper.selectOne(QueryBuilder.lambda(FlowNode.class) .eq(FlowNode::getNodeCode, nodeCode) - .eq(FlowNode::getDefinitionId, definitionId)); + .eq(FlowNode::getDefinitionId, definitionId) + .build()); } /**