在学习Mybatis一对一关联查询时遇到的疑问【待解决】

疑问描述:

在映射文件中 resultMap 标签加上 autoMapping 属性之前无法获取从表中的值,

加入autoMapping之后注释掉

    <result property="userId" column="user_id" >

pojo类与字段不对应的userId仍然会自动获取到user_id值

另外,如果注释掉

    <id property="id" column="id"/> 

List集合中只能获取到一个对象,原本能够获取3个对象


OrdersMapper.xml

<resultMap id="order" type="cn.itheima.mybatis.pojo.orders"  autoMapping="true">
    <id property="id" column="id"/> 
    <result property="createtime" column="createtime"/>
    <result property="note" column="note"/>
      <result property="number" column="number"/> 

    <result property="userId" column="user_id"/>

    <association property="user" javaType="cn.itheima.mybatis.pojo.User">
        <result property="username" column="username"/> 
        <result property="address" column="address"/>   

    </association>
</resultMap>

<select id="query"  resultMap="order">
        SELECT  
        o.number,o.createtime,
        o.note,u.username,
        u.address 
        left JOIN `user` u ON o.user_id = u.id
</select>

OrdersMapper接口

public interface OrdersMapper {

    /**
     * 一对一关联查询 ,查询所有订单信息,关联查询下单用户信息。
     * 
     * @return
     */
    List<orders> query();
}

junit测试类代码

//一对一关联查询 ,查询所有订单信息,关联查询下单用户信息。
//List<User> query();
@Test
public void query(){
    SqlSession sqlSession = sqlSessionFactory.openSession();

    OrdersMapper ordersMapper = sqlSession.getMapper(OrdersMapper.class);
    List<orders>  list= ordersMapper.query();
    for(orders order : list){
        System.out.println(order);
    }
}

orders.java

public class orders {

private Integer id;
private Integer userId;
private String  number;
private Date createtime;
private String note;

//附加对象
private User user;

getter and setter....
}

Mysql表信息

orders表
这里写图片描述

users表
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值