Mybatis-02一对一查询

续上节

  • 订单关联用户

1.创建OrderUser类

package com.mybatis.domain;

import java.util.Date;

/*订单关联用户信息*/
public class OrderUser extends Order{
	private String username;// 用户姓名
	private String address;// 地址
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "OrderUser [username=" + username + ", address=" + address + ", getId()=" + getId() + ", getUserId()="
				+ getUserId() + ", getNumber()=" + getNumber() + ", getCreatetime()=" + getCreatetime() + ", getNote()="
				+ getNote() + "]";
	}
	
}

2.OrderMapper接口中添加方法

	//一对一关联
	List<OrderUser> getOrderUser();

3.修改OrderMapper.xml

	<!-- 一对一关联查询 -->
	<select id="getOrderUser" resultType="orderuser">
		SELECT
		  o.`id`,
		  o.`user_id` userId,
		  o.`number`,
		  o.`createtime`,
		  o.`note`,
		  u.username,
		  u.address
		FROM `order` o
		  LEFT JOIN `user` u
		    ON u.id = o.user_id 
	</select>

4.单元测试

@Test
	public void testgetOrderUser() {
		SqlSession sql=SqlSessionFactoryUtils.getSql().openSession();
		//接口代理实现类
		OrderMapper orderMapper=sql.getMapper(OrderMapper.class);
		List<OrderUser> list=orderMapper.getOrderUser();
		for(OrderUser orderUser:list)
			System.out.println(orderUser);
		sql.close();
	}
-----------------------------------------------

1.OrderMapper接口中添加方法

	//一对一 resultMap
	List<Order> getOrderUserMap();

2.修改OrderMapper.xml

	<!-- type数据类型 -->
	<resultMap type="order" id="order_user_map">
		<!-- 主键映射 -->
		<id property="id" column="id" />
		<result property="userId" column="user_id" />
		<result property="number" column="number" />
		<result property="createtime" column="createtime" />
		<result property="note" column="note" />
		<!-- 用于配置一对一关系 ,property,订单order中的user属性
		javaType可以用别名 user,user数据类型-->
		<association property="user" javaType="com.mybatis.domain.User">
			<id property="id" column="user_id" />
			<result property="username" column="username" />
			<result property="address" column="address" />
			<result property="birthday" column="birthday" />
			<result property="sex" column="sex" />
		</association>
	</resultMap>
	
	<select id="getOrderUserMap" resultMap="order_user_map">
		SELECT
		  o.`id`,
		  o.`user_id` userId,
		  o.`number`,
		  o.`createtime`,
		  o.`note`,
		  u.username,
		  u.address
		FROM `order` o
		  LEFT JOIN `user` u
		    ON u.id = o.user_id 
	</select>

3.修改Order类

package com.mybatis.domain;

import java.util.Date;

public class Order {
	private Integer id;

	private Integer userId;

	private String number;

	private Date createtime;

	private String note;

	private User user;
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Integer getUserId() {
		return userId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number == null ? null : number.trim();
	}

	public Date getCreatetime() {
		return createtime;
	}

	public void setCreatetime(Date createtime) {
		this.createtime = createtime;
	}

	public String getNote() {
		return note;
	}

	public void setNote(String note) {
		this.note = note == null ? null : note.trim();
	}

	@Override
	public String toString() {
		return "Order [id=" + id + ", userId=" + userId + ", number=" + number + ", createtime=" + createtime
				+ ", note=" + note + ", user=" + user + "]";
	}
}

4.单元测试

@Test
	public void testgetOrderUserMap() {
		SqlSession sql=SqlSessionFactoryUtils.getSql().openSession();
		//接口代理实现类
		OrderMapper orderMapper=sql.getMapper(OrderMapper.class);
		List<Order> list=orderMapper.getOrderUserMap();
		for(Order order:list) {
			System.out.println(order);
			System.out.println("订单用户为:"+order.getUser());
		}
		sql.close();
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值