MyBatis一对一查询使用ResultType映射

来源:互联网 发布:python黑帽子 百度云 编辑:程序博客网 时间:2024/05/16 07:10

需求背景:查询订单信息关联用户信息。

mapper.xml

<!DOCTYPE mapper    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.hl.mybatis.first.mapper.OrdersCustomMapper">    <!-- 定义查询订单关联查询用户ResultMap         com.hl.myabtis.first.beas.Orders将整个查询的信息映射到Order上    -->    <resultMap type="com.hl.myabtis.first.beas.Orders" id="ordersUserResultMap">        <!-- 配置Order映射信息            id:订餐结果集唯一标识            property:对应订单类属性         -->        <id column="id" property="id"/>        <result column="user_id" property="user_id"/>        <result column="number" property="number"/>        <result column="createtime" property="createtime"/>        <result column="note" property="note"/>        <!-- 配置关联属性User的映射信息            association:用于映射关联查询单个对象的信息            property:用户信息所要映射到的属性名            user:属性的全类名         -->        <association property="user" javaType="com.hl.myabtis.first.beas.User">        <!-- 关联查询用户的唯一标识             column:指定唯一标识用户信息的列            javaType:映射到User的对应属性类型        -->            <id column="user_id" javaType="java.lang.Integer"/>            <result column="username" property="username"/>            <result column="sex" property="sex"/>            <result column="address" property="address"/>        </association>    </resultMap>    <!-- 查询订单关联查询用户信息 -->    <select id="findOrdersUser" resultType="com.hl.myabtis.first.beas.OrdersCustom">        select orders.*,user.username,user.sex,user.address from orders,user where orders.user_id = user.id    </select>       <!-- 查询订单关联查询用户信息  ResultMap映射-->    <select id="findOrdersUserResultMap" resultMap="ordersUserResultMap">        select orders.*,user.username,user.sex,user.address from orders,user where orders.user_id = user.id    </select>   </mapper>

mapepr.java

package com.hl.mybatis.first.mapper;import java.util.List;import com.hl.myabtis.first.beas.Orders;import com.hl.myabtis.first.beas.OrdersCustom;public interface OrdersCustomMapper {    //查询订单关联用户信息    public List<OrdersCustom> findOrdersUser() throws Exception;    //查询订单关联用户信息ResultMap    public List<Orders> findOrdersUserResultMap() throws Exception;}

原始订单类:

package com.hl.myabtis.first.beas;import java.util.Date;public class Orders {    private Integer id;    private Integer user_id;    private String number;    private Date createtime;    private String note;    //用户信息    private User user;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public Integer getUserId() {        return user_id;    }    public void setUserId(Integer userId) {        this.user_id = userId;    }    public String getNumber() {        return number;    }    public void setNumber(String number) {        this.number = number;    }    public Date getCreatetime() {        return createtime;    }    public void setCreatetime(Date createtime) {        this.createtime = createtime;    }    public String getNote() {        return note;    }    public void setNote(String note) {        this.note = note;    }    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    @Override    public String toString() {        return "Orders [id=" + id + ", user_id=" + user_id + ", number="                + number + ", createtime=" + createtime + ", note=" + note                + ", user=" + user + "]";    }}

测试代码:

@Test    public void testFindOrdersUserResultMap() throws Exception{        SqlSession sqlSession = sqlSessionFactory.openSession();        OrdersCustomMapper ordersMapper = sqlSession.getMapper(OrdersCustomMapper.class);        List<Orders> list = ordersMapper.findOrdersUserResultMap();        for (Orders ordersCustom : list) {            System.out.println(ordersCustom);        }    }

对比:MyBatis一对一查询使用ResultType映射 ;不同的是将User作为一个属性存在Orders类中。

原创粉丝点击