Mybatis框架-13:多表操作之多对一

第一步:建立两张表并建立外键联系

我这里是客户与订单的表进行举例

第二步:建立对应关系的映射类(domain)

customer类

@Data
public class Customer {
    private Integer cust_id;
    private String cust_name;
    private String cust_profession;
    private String cust_phone;
    private String email;

}

order类

@Data
public class Order {
    private Integer orderId;
    private String orderName;
    private String orderNum;
    private Customer customer;
}

第三步:编写mapper

public interface OrderMapper {
    public List<Order> getAllOrder();
}

第四步:编写mapper.xml

方式一:association(建议使用)

<resultMap id="orderMap" type="com.ctbu.domain.Order">
        <result property="orderId" column="orderId"/>
        <result property="orderName" column="orderName"/>
        <result property="orderNum" column="orderNum"/>

        <association property="customer" javaType="Customer">
            <id property="cust_id" column="cust_id"/>
            <result property="cust_name" column="cust_name"/>
            <result property="cust_phone" column="cust_phone"/>
            <result property="cust_profession" column="cust_profession"/>
            <result property="email" column="email"/>
        </association>
    </resultMap>

    <select id="getAllOrder" resultMap="orderMap">
        SELECT * from `order` as o LEFT JOIN `customer` as c ON o.orderCustId=c.cust_id;
    </select>

方式二:级联封装(一般不适用) 

<resultMap id="orderMap" type="com.ctbu.domain.Order">
        <result property="orderId" column="orderId"/>
        <result property="orderName" column="orderName"/>
        <result property="orderNum" column="orderNum"/>

        <result property="customer.cust_id" column="cust_id"/>
        <result property="customer.cust_name" column="cust_name"/>
        <result property="customer.cust_phone" column="cust_phone"/>
        <result property="customer.cust_profession" column="cust_profession"/>
        <result property="customer.email" column="email"/>
    </resultMap>

    <select id="getAllOrder" resultMap="orderMap">
        SELECT * from `order` as o LEFT JOIN `customer` as c ON o.orderCustId=c.cust_id;
    </select>

第五步:测试程序

 @Test
    public void test4(){
        SqlSession session = MyUtils.openSession();
        OrderMapper mapper = session.getMapper(OrderMapper.class);
        List<Order> allOrder = mapper.getAllOrder();
        for (Order order : allOrder) {
            System.out.println(order);
        }
        session.close();
    }

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值