创建product表:商品编号pid(int,主键),商品名称pname,商品类别category_id(int,外键)。 创建category表:类别编号cid(int,主键),类别名称cname。 实现以下功能(在MyBatis中,多对一的关系简化成了一对一): (1) 用嵌套查询的方式实现:查询商品信息及对应的类别信息; (2) 用嵌套结果的方式实现:查询商品信息及对应的类别信息; 用连接查询实现:查询商品信息及对应的类别信息;(可以用pojo或map存储结果集)
时间: 2024-03-05 22:48:47 浏览: 217
好的,针对你的问题,我来逐一回答:
1. 嵌套查询方式实现查询商品信息及对应的类别信息:
```xml
<select id="findProductsWithCategoryByNestedSelect" resultMap="productWithCategoryMap">
SELECT p.pid, p.pname, p.category_id, c.cid, c.cname
FROM product p, category c
WHERE p.category_id = c.cid AND p.pid = #{pid}
</select>
```
2. 嵌套结果方式实现查询商品信息及对应的类别信息:
```xml
<select id="findProductsWithCategoryByNestedResult" resultMap="productWithCategoryMap">
SELECT p.pid, p.pname, c.cid, c.cname
FROM product p
LEFT JOIN category c ON p.category_id = c.cid
WHERE p.pid = #{pid}
</select>
```
3. 连接查询方式实现查询商品信息及对应的类别信息:
```xml
<select id="findProductsWithCategoryByJoin" resultMap="productWithCategoryMap">
SELECT p.pid, p.pname, c.cid, c.cname
FROM product p
LEFT JOIN category c ON p.category_id = c.cid
WHERE p.pid = #{pid}
</select>
```
对应的 resultMap 配置为:
```xml
<resultMap id="productWithCategoryMap" type="map">
<id property="pid" column="pid"/>
<result property="pname" column="pname"/>
<association property="category" javaType="map">
<id property="cid" column="cid"/>
<result property="cname" column="cname"/>
</association>
</resultMap>
```
以上就是实现查询商品信息及对应的类别信息的三种方式了,注意在第一种方式中使用了嵌套查询,而第二种和第三种方式中使用了嵌套结果和连接查询。同时,三种方式中都使用了 resultMap 来映射查询结果。
阅读全文