MyBatis的多对一
上一篇文章MyBatis的一对多介绍了一对多的场景,其中user对order是一对多的关系,这个关系会被MyBatis映射到一个UserOrderVO的类中。本文接着讲MyBatis的多对一,其实多对一和一对多刚好相反,而order和user正是多对一的关系。
1、增加OrderUserVO类
package com.github.ralgond.bootmybatis.entity;
public class OrderUserVO extends Order {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "OrderUserVO [user=" + user + ", getId()=" + getId() + ", getName()=" + getName() + ", getUserId()="
+ getUserId() + "]";
}
}
2、增加OrderMapper类
package com.github.ralgond.bootmybatis;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.github.ralgond.bootmybatis.entity.OrderUserVO;
@Repository
public interface OrderMapper {
public List<OrderUserVO> getOrderUser();
}
3、增加OrderMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.github.ralgond.bootmybatis.OrderMapper">
<select id="getOrderUser" resultMap="OrderUserMap">
select o.*, u.id as u_id, u.name as u_name from `order` o left join user u on o.user_id=u.id;
</select>
<resultMap type="OrderUserVO" id="OrderUserMap">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="user_id" property="userId"/>
<association property="user" javaType="User">
<id property="id" column="u_id"/>
<result property="name" column="u_name"/>
</association>
</resultMap>
</mapper>
4、修改或增加service和controller
(省略)
5、运行


浙公网安备 33010602011771号