需求:查询订单,查询出订单人的信息(以订单为主,一个订单对应一个用户,实现一对一)
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
- 首先创建实体类:
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 + "]";
}
}
- 创建接口:
public interface OrderMapper {
List<Order> getOrderUserInfo();
}
- 在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>
- 测试类的实现:
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);
}
}
}