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

来源:互联网 发布:使命召唤 ol命运数据 编辑:程序博客网 时间:2024/06/03 19:28

疑问描述:

在映射文件中 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();@Testpublic 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表
这里写图片描述