1-mybatis解決limit語句限制
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery異常解決方法
例子1:mybatis-plus 1層子查詢嵌套,mysql不支持LIMIT/IN/ANY/SOME
// 查詢最近100條數據
List<SendNsqMessageDO> allfeeYopProtocolDTOs = sendNsqMessageMapper.selectList(
new QueryWrapper<SendNsqMessageDO>()
.inSql("id","select id from send_nsq_message order by created_at desc limit 100")
);
解決辦法:2層子查詢
// 查詢最近100條數據
List<SendNsqMessageDO> allfeeYopProtocolDTOs = sendNsqMessageMapper.selectList(
new QueryWrapper<SendNsqMessageDO>()
.inSql("id","select t.id from (select * from send_nsq_message order by created_at desc limit 100) as t")
);
2-stream快速實現求和
目的:結合mybatis查詢結果,快速求和
普通解決辦法:求出列的List,然后遍歷相加,求和
簡化版:
int oweQuotaSum = alldebtRecords.stream().mapToInt(t->Math.toIntExact(t.getOweQuota())).sum();
int oweQuotaSnapshotSum = alldebtRecords.stream().mapToInt(t->Math.toIntExact(t.getOweQuotaSnapshot())).sum();
int recoveryQuotaSum = alldebtRecords.stream().mapToInt(t->Math.toIntExact(t.getRecoveryQuota())).sum();