您的位置:首页 > 其它

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

2017-08-31 21:49 579 查看

疑问描述:

在映射文件中 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表

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis