MySQL中Select语句返回用List来接收

MySQL根据条件查询Select记住,永远用List<>几首返回。对于,确定只有单条记录,一般我的写法为:

public int getPayStatusByPayno(OrderInfoRequest orderInfoRequest) {
    if (orderInfoRequest == null) {
        throw new DonationException(ErrorCode.BAD_REQUEST);
    }
    List<Integer> statusList = paymentMapper.getPayStatusByPayno(orderInfoRequest.getTradeno());
    if (null == statusList || statusList.size() == 0) {
        throw new DonationException(ErrorCode.TRADENO_NOT_FOUND);
    }
    if (statusList.size() == 1) {
        return statusList.get(0);
    } else {
        log.error("query trade status, param pay_no is:{}, return dirty data is:{}", orderInfoRequest.getTradeno(), JSON.toJSONString(statusList));
        throw new DonationException(ErrorCode.DATABASE_DIRTY_DATA);
    }
}
上述代码中,先判断orderInfoRequest是否为null,避免后面orderInfoRequest.getTradeno产生空指针异常。然后,在查询数据库的时候,用List<Integer>来接收返回的值,对于List<Integer>返回的值可能为null(查不到的情况),此时直接返回相应查不到的错误信息。对于查询到的个数大于等于0,先判断是否size为1,因为明确知道一定是返回一个数据,因此,直接返回statusList.get(0),如果大于1,则提示返回脏数据,并且打印去MySQL请求的数据和从MySQL返回的数据。

猜你喜欢

转载自blog.csdn.net/timchen525/article/details/80637583