使用java+mybaits技术实现 ,订单表和商品表的一对多查询 ,并打印,用户表和订单表的一对一查询,并打印
时间: 2023-08-26 22:03:32 浏览: 156
假设订单表为 `order`,商品表为 `item`,用户表为 `user`,其中 `order` 表中有一个外键关联 `item` 表,`user` 表中有一个外键关联 `order` 表。
一对多查询订单表和商品表,可以使用 MyBatis 的关联查询。在 `Order` 对象中添加一个 `List<Item>` 类型的属性,表示一个订单对应多个商品。在映射文件 `OrderMapper.xml` 中,可以使用 `resultMap` 标签定义一对多关系:
```
<resultMap id="orderMap" type="Order">
<id property="id" column="id"/>
<result property="total" column="total"/>
<association property="user" javaType="User">
<id property="id" column="user_id"/>
<result property="username" column="username"/>
</association>
<collection property="items" ofType="Item">
<id property="id" column="item_id"/>
<result property="name" column="name"/>
<result property="price" column="price"/>
</collection>
</resultMap>
<select id="getOrderWithItems" resultMap="orderMap">
SELECT o.id, o.total, o.user_id, u.username, i.id AS item_id, i.name, i.price
FROM `order` o
INNER JOIN user u ON o.user_id = u.id
INNER JOIN item i ON o.id = i.order_id
WHERE o.id = #{id}
</select>
```
然后在 Java 中调用这个方法,即可获取一个订单及其对应的多个商品:
```java
Order order = orderMapper.getOrderWithItems(1);
System.out.println(order.toString());
```
一对一查询用户表和订单表,可以使用 MyBatis 的关联查询。在 `User` 对象中添加一个 `Order` 类型的属性,表示一个用户对应一个订单。在映射文件 `UserMapper.xml` 中,可以使用 `resultMap` 标签定义一对一关系:
```
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<association property="order" javaType="Order">
<id property="id" column="order_id"/>
<result property="total" column="total"/>
</association>
</resultMap>
<select id="getUserWithOrder" resultMap="userMap">
SELECT u.id, u.username, o.id AS order_id, o.total
FROM user u
INNER JOIN `order` o ON u.id = o.user_id
WHERE u.id = #{id}
</select>
```
然后在 Java 中调用这个方法,即可获取一个用户及其对应的一个订单:
```java
User user = userMapper.getUserWithOrder(1);
System.out.println(user.toString());
```
阅读全文
相关推荐
















