需求:查询订单,查询出订单人的信息(以订单为主,一个订单对应一个用户,实现一对一) 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); } } }