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、运行

posted @ 2020-12-20 17:17  ralgo  阅读(71)  评论(0)    收藏  举报