StatTurnoverHour statTurnoverHour = new StatTurnoverHour(); statTurnoverHour.setStoreId(dto.getStoreId()); statTurnoverHour.setHourTime(dto.getHourTime()); statTurnoverHour.setPayTime(dto.getPayTime()); statTurnoverHour.setTurnover(dto.getMoney()); statTurnoverHour.setOrderNum(dto.getOrderNum()); LambdaUpdateWrapper<StatTurnoverHour> updateWrapper = Wrappers.lambdaUpdate(); updateWrapper.setSql("turnover = turnover + " + dto.getMoney()); updateWrapper.setSql("order_num = order_num + " + dto.getOrderNum()); updateWrapper.eq(StatTurnoverHour::getStoreId, dto.getStoreId()); updateWrapper.eq(StatTurnoverHour::getHourTime, dto.getHourTime()); updateWrapper.eq(StatTurnoverHour::getPayTime, dto.getPayTime()); boolean b = this.saveOrUpdate(statTurnoverHour, updateWrapper);执行的sql:update stat_turnover_hour set order_num = 1, turnover = 1.00, hour_time = 11, pay_time = TIMESTAMP '2023-05-23 00:00:00.000', storeId = 215, turnover = turnover + 1.00, order_num = order_num + 1 where storeId = 215 and hour_time = 11 and pay_time = TIMESTAMP '2023-05-23 00:00:00.000',怎么让order_num = 1, turnover = 1.00不存在sql
时间: 2023-12-06 09:45:20 浏览: 100
POBOVODTOPOJODAO.zip_dto_java dto dao_java vo_qovod
5星 · 资源好评率100%
在你的代码中,有两个地方使用了`setSql`方法,这个方法会将整个SQL语句进行替换,因此第一个`setSql`设置的`turnover`字段的更新操作被第二个`setSql`覆盖掉了,最终执行的SQL语句只包含了`order_num`字段的更新操作,没有包含`turnover`字段的更新操作。为了解决这个问题,你可以将这两个更新操作合并成一个,如下所示:
```
LambdaUpdateWrapper<StatTurnoverHour> updateWrapper = Wrappers.lambdaUpdate();
updateWrapper.set(StatTurnoverHour::getOrderNum, StatTurnoverHour::getOrderNum.plus(dto.getOrderNum()));
updateWrapper.set(StatTurnoverHour::getTurnover, StatTurnoverHour::getTurnover.plus(dto.getMoney()));
updateWrapper.eq(StatTurnoverHour::getStoreId, dto.getStoreId());
updateWrapper.eq(StatTurnoverHour::getHourTime, dto.getHourTime());
updateWrapper.eq(StatTurnoverHour::getPayTime, dto.getPayTime());
boolean b = this.saveOrUpdate(statTurnoverHour, updateWrapper);
```
这样,`set`方法会将更新操作添加到更新语句中,而不是直接替换整个SQL语句。执行的SQL语句应该是这样的:
```
update stat_turnover_hour
set order_num = order_num + 1.00, turnover = turnover + 1.00
where storeId = 215 and hour_time = 11 and pay_time = TIMESTAMP '2023-05-23 00:00:00.000'
```
阅读全文