mybatis plus查询更新查询值不是最新问题

场景

SoOrderDtl orderDtl = getById();
        String transType = orderDtl.getTransType();
		
// 更新
 lambdaUpdate().eq(SoOrderDtl::getOrderNo, orderNo).in(SoOrderDtl::getOrderSeq, orderSeq).update();
 
// 再次查询
SoOrderDtl newOrderDtl = getById('');

如果整表查询,多次查询同一条记录,mybatis plus会返回同一个实例对象,造成混乱
解决方案,.lambdaQuery().select(,,,),按照字段查询,会返回一个新对象

SoOrderDtl orderDtl = orderDtlService
            .lambdaQuery()
            .eq(SoOrderDtl::getOrderNo, orderNo)
            .eq(SoOrderDtl::getOrderSeq, orderSeq)
            .select(CoreEntity::getId, SoOrderDtl::getTransType)
            .one();
        String transType = orderDtl.getTransType();
		
// 更新
 lambdaUpdate().eq(SoOrderDtl::getOrderNo, orderNo).in(SoOrderDtl::getOrderSeq, orderSeq).update();
 
// 再次查询
SoOrderDtl newOrderDtl = getById('');

场景2

SoOrderDtl orderDtl = getById();
orderDtl.setOrderNo('xxx');
SoOrderDtl newOrderDtl = getById('');
// 此时orderDtl对象的orderNo属性被重置了
posted @ 2025-05-11 13:32  fight139  阅读(32)  评论(0)    收藏  举报