想必大家都这样写过
public interface OrderMapper {
@Select("select order_name from `order` where id = #{orderId}")
Order findOneById(Long orderId);
}
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderMapper orderMapper;
public Order findOneById(Long orderId) {
Order order = orderMapper.findOneById(orderId);
String orderName = order.getOrderName();
}
结果一运行就看到讨厌的NullPointException,好气人啊!于是我们要对NPE做判断
public Order findOneById(Long orderId) {
Order order = orderMapper.findOneById(orderId);
if (order != null) {
String orderName = order.getOrderName();
}
}
假如我们的mapper这样写的话:
@Select("select order_name from `order` where id = #{orderId}")
Optional<Order> findOneById(Long orderId);
那么我们的service层逻辑就再也不用担心NullPointException了
public Order findOneById(Long orderId) {
Order order = orderMapper.findOneById(orderId).orElseThrow(
() -> new IllegalArgumentException("this order does not exit"));
String orderName = order.getOrderName();
}
mybatis版本过低的话是不支持Optional,所以我们需要注意其版本号
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>