mybatis中查询一对多实现
mapper:
public interface OrderMapper {
public Orders findOrderById3(int id);
}
xml配置:
<!-- ================一对多==================-->
<resultMap id="orderRslMap3" type="orders">
<!-- 往orders的模型匹配数据-->
<id column="id" property="id"></id>
<id column="note" property="note"></id>
<id column="number" property="number"></id>
<id column="createtime" property="createtime"></id>
<!-- 往orders的user匹配数据
模型里有模型,使用association来配置-->
<association property="user" javaType="user">
<id column="user_id" property="id"></id>
<id column="username" property="username"></id>
<id column="address" property="address"></id>
</association>
<!-- 一对多匹配: 往orders的orderdetails 匹配数据
注意:集合里类型使用ofType,而不javaType
-->
<collection property="orderDetails" ofType="orderDetail">
<id column="detail_id" property="id"></id>
<id column="items_id" property="itemsId"></id>
<id column="items_num" property="itemsNum"></id>
</collection>
</resultMap>
测试类:
//一对多,模型中有集合
public class Demo01 {
SqlSession session;
@Before
public void before() throws IOException {
System.out.println("before....获取session");
//读取配置文件
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
//通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//通过SqlSessionFactory创建SqlSession
session = sessionFactory.openSession();
}
@After
public void after(){
session.close();
}
@Test
public void test8() throws IOException {
OrderMapper mapper = session.getMapper(OrderMapper.class);
Orders order = mapper.findOrderById3(3);
System.out.println(order);
System.out.println(order.getUser());
System.out.println(order.getOrderDetails());
}
}