From a16f2490247d3ba33683c46c74782c5dc2827f0c 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: Mon, 17 Aug 2026 13:16:17 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20mapper.lambda=20?= =?UTF-8?q?=E9=93=BE=E5=BC=8F=E8=B0=83=E7=94=A8=E6=97=A0=E6=B3=95=E8=B5=B0?= =?UTF-8?q?=20@DS=20=E7=9B=B4=E6=8E=A5=E5=88=87=E6=8D=A2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/core/mapper/BaseMapperPlus.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) 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 aa8101600..c5e70b8ac 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 @@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; 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.metadata.MapperProxyMetadata; import com.baomidou.mybatisplus.core.toolkit.reflect.GenericTypeUtils; +import com.baomidou.mybatisplus.core.toolkit.MybatisUtils; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.toolkit.ChainWrappers; @@ -14,6 +16,7 @@ import com.baomidou.mybatisplus.extension.toolkit.Db; import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.LogFactory; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StreamUtils; import java.io.Serializable; @@ -100,7 +103,26 @@ public interface BaseMapperPlus extends BaseMapper { * @return Lambda CRUD 链式包装器 */ default LambdaCrudChainWrapper lambda() { - return new LambdaCrudChainWrapper<>(this); + return new LambdaCrudChainWrapper<>(mapperProxy()); + } + + /** + * 获取当前 Mapper 对应的 Spring 代理对象,确保 Mapper 上的切面注解能够继续生效。 + * + * @return Mapper 代理对象 + */ + private BaseMapperPlus mapperProxy() { + BaseMapperPlus mapper = this; + try { + MapperProxyMetadata metadata = MybatisUtils.getMapperProxy(this); + Object proxy = SpringUtils.getBean(metadata.getMapperInterface()); + if (proxy instanceof BaseMapperPlus) { + mapper = (BaseMapperPlus) proxy; + } + } catch (RuntimeException ignored) { + // Mapper 可能未托管于 Spring 容器,保留当前对象作为回退。 + } + return mapper; } /** @@ -109,7 +131,7 @@ public interface BaseMapperPlus extends BaseMapper { * @return Lambda 链式更新包装器 */ default LambdaUpdateChainWrapper lambdaUpdate() { - return ChainWrappers.lambdaUpdateChain(this); + return ChainWrappers.lambdaUpdateChain(mapperProxy()); } /**