疑问描述:
在映射文件中 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表