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

xiaoxiao2021-02-28  93

疑问描述:

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

转载请注明原文地址: https://www.6miu.com/read-59624.html

最新回复(0)