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属性被重置了