目录
什么是N+1:
例如我们有用户User和订单Order两张表,在一般情况下我们只需要查询用户就可以,(这就是所谓的“1”)但是User和Order都被查询出来了,每一个用户User都对应一个或者多个订单Order,查询出来的Order订单就是所谓的“N”。或许叫“1+N”会更贴切,但是这样的查询就会造成不必要的性能浪费。
1.代码演示
1.1创建POJO
我们有User和Order两个对象
package user.pojo;
import lombok.Data;
@Data
public class User {
private long id;
private String userName;
private int userAge;
private Order orderId;
}
package user.pojo;
import lombok.Data;
@Data
public class Order {
private long id;
private String orderName;
private String note;
}
1.2创建Mapper接口
package user.mapper;
import user.pojo.User;
public interface UserMapper {
User getUser(long id);
}
package user.mapper;
import user.pojo.Order;
public interface OrderMapper {
Order getOrder(long id);
}
1.3创建XML映射文件
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="user.mapper.UserMapper">
<resultMap id="UserMap" type="user.pojo.User">
<id property="id" column="id"/>
<result property="userName" column="userName"/>
<result