java后端缓存 And BaseMapper
缓存
@Slf4j
@Component
public class RetailerStatisticCacher {
private LoadingCache<Pair<Long,String>, SettleStatisticDto> retailerStatisticCache;
@RpcConsumer(check = "false")
private SettleStatisticService settleStatisticService;
@PostConstruct
public void init(){
retailerStatisticCache = CacheBuilder.newBuilder()
.expireAfterWrite(2, TimeUnit.MINUTES)
.maximumSize(5000)
.build(new CacheLoader<Pair<Long,String> , SettleStatisticDto>() {
@Override
public SettleStatisticDto load(Pair<Long,String> sort) throws Exception {
Response<SettleStatisticDto> retailerStatisticDto =
settleStatisticService.retailerStatistic(sort.first,sort.second);
if (!retailerStatisticDto.isSuccess()){
throw new ServiceException(retailerStatisticDto.getError());
}
return retailerStatisticDto.getResult();
}
});
}
/**
* 根据 查找对应的信息
*/
public SettleStatisticDto findStatisticStatistic(Long retailerId, String settleMonth) {
return RespHelper.or500(settleStatisticService.retailerStatistic(retailerId,settleMonth));
// Pair<Long, String> packageIdAndAddressIdPair = Pair.of(retailerId, settleMonth);
// return retailerStatisticCache.getUnchecked(packageIdAndAddressIdPair);
}
/**
* 缓存全部失效
*/
public void invalidateAll() {
this.retailerStatisticCache.invalidateAll();
}
手动查询
@Mapper
public interface HisenseO2oSettleNewRetailMapper extends BaseMapper<HisenseO2oSettleNewRetail> {
}
private HisenseO2oSettleNewRetailMapper hisenseO2oSettleNewRetailMapper;
@Autowired
public SettleStatisticServiceImpl(
HisenseO2oSettleNewRetailMapper hisenseO2oSettleNewRetailMapper,
) {
this.hisenseO2oSettleNewRetailMapper = hisenseO2oSettleNewRetailMapper;
}
public Response<SettleStatisticDto> retailerStatistic(Long retailerId, String settleMonth) {
QueryWrapper<HisenseO2oSettleNewRetail> theMonthSaleCriteria = new QueryWrapper<HisenseO2oSettleNewRetail>()
.select("COALESCE(sum(total_fee),0) as total_fee")
.eq("shop_id", sellerId)
.eq("type",OrderSource.SHOP.getValue())
.in("fee_type",FeeType.PAYMENT_GOODS.getValue())
.ge("settle_month", settleMonth)
.lt("settle_status", RebateSettleStatus.ALREADY_SETTLE.value());
HisenseO2oSettleNewRetail thisMonthSaleFee = hisenseO2oSettleNewRetailMapper.selectOne(theMonthSaleCriteria);
.......
.......
.......