mybatis高级查询之一对一

需求:查询订单,查询出订单人的信息(以订单为主,一个订单对应一个用户,实现一对一)
SQL语句为:(这里设置的有别名,方便resultMap进行匹配)

select 
		u.id uid,u.user_name,u.password,u.name,u.age,u.sex,u.birthday,u.created,u.updated,o.id
		oid,o.user_id,o.order_number from tb_user u, tb_order o 
		where u.id = o.user_id
  1. 首先创建实体类:
package com.hisoft.pojo;

import java.util.List;

public class Order {
	int id;
	long userId;
	String orderNumber;
	User user;//创建一个用户对象,将查询到的结果映射到order当中,实现一对一
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public long getUserId() {
		return userId;
	}
	public void setUserId(long userId) {
		this.userId = userId;
	}
	public String getOrderNumber() {
		return orderNumber;
	}
	public void setOrderNumber(String orderNumber) {
		this.orderNumber = orderNumber;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public Order(int id, long userId, String orderNumber, User user) {
		super();
		this.id = id;
		this.userId = userId;
		this.orderNumber = orderNumber;
		this.user = user;
	}
	public Order() {
		super();
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "Order [id=" + id + ", userId=" + userId + ", orderNumber=" + orderNumber + ", user=" + user + "]";
	}
}
  1. 创建接口:
public interface OrderMapper {
	List<Order> getOrderUserInfo();
}
  1. 在OrderMapper.xml配置文件里面的设置和内容。(需要注意一点,这里采用的是动态代理,没有实现类,接口绑定了xml文件)
	<resultMap type="Order" id="OrderUserInfo" autoMapping="true">
		<id column="oid" property="id" />
		<association property="user" javaType="User">
			<id column="uid" property="uid" />
		</association>
	</resultMap>
	
<select id="getOrderUserInfo" resultMap="OrderUserInfo">
		select 
		u.id uid,u.user_name,u.password,u.name,u.age,u.sex,u.birthday,u.created,u.updated,o.id
		oid,o.user_id,o.order_number from tb_user u, tb_order o 
		where u.id = o.user_id
	</select>
  1. 测试类的实现:
public class OrderTest {

	// new 一个userDao对象
	private OrderMapper orderMapper;
	private SqlSession sqlSession;// 定义成全局的对象

	@Before // 执行test方法之前执行
	public void setUp() throws Exception {

		String resource = "mybatis-config.xml";
		// 读取xml配置文件
		InputStream is = Resources.getResourceAsStream(resource);
		// 构建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
		// 打开SqlSession,得到sqlSession可以进行curd的操作
		sqlSession = sqlSessionFactory.openSession();
		// userDao = new UserDaoImpl(sqlSession);
		// 获取mapper的动态代理实现类
		orderMapper = sqlSession.getMapper(OrderMapper.class);
	}

	// 根据id查信息
	@Test
	public void getOrderUserInfo() {
		List<Order> olist = orderMapper.getOrderUserInfo();
		for (Order order : olist) {
			System.out.println(order);
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值