一、需求
查询订单信息,关联查询创建订单的用户信息,需提前创建好订单表和用户表,订单和用户关系是一对一。
二、创建pojo类
1、订单实体类
需在订单类定义用户信息,实现一对一关系。
public class Orders {
private Integer id;
private Integer userId;
private String number;
private Date createtime;
private String note;
//用户信息
private User user;
下面是set与get方法省去......
2、创建输出映射包装类
因为原始的Orders.java不能映射全部字段,需要新创建的pojo。创建 一个pojo继承包括查询字段较多的po类
public class OrdersCustom extends Orders {
private String username;
private String sex;
private String address;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
三、添加mapper.xml
<!-- 查询订单关联查询用户信息 使用resultType-->
<select id="findOrdersUser" resultType="com.dd.mybatis.po.OrdersCustom">
SELECT
orders.*,
USER.username,
USER.sex,
USER.address
FROM
orders,
USER
WHERE orders.user_id = user.id
</select>
四、添加mapper.java
public List<OrdersCustom> findOrdersUser() throws Exception;
五、代码测试
public class UserMapperCustom {
SqlSessionFactory sqlSessionFactory;
@Before
public void before() throws Exception {
// mybatis配置文件
String resource = "SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建会话工厂,出入文件配置流
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void findOrdersUserTest() {
SqlSession sqlSession=null;
try {
sqlSession=sqlSessionFactory.openSession();
OrdersMapperCustom ordersMapperCustom=sqlSession.getMapper(OrdersMapperCustom.class);
List<OrdersCustom> list=ordersMapperCustom.findOrdersUser();
System.out.println(list);
} catch (Exception e) {
sqlSession.close();
}
}