mybatis查询(一对多查询)

时间:2021-02-22 09:38:19

使用的数据库表是食品表和食品分类表,
如果有不清楚表结构的可以查看上一篇文章, mybatis查询(一对一查询)(http://blog.csdn.net/wqh8522/article/details/54615337)

一、一对多查询

1、定义po类:

这里po类与上一篇的po类相同,就不再贴代码了。

2、ResultMap映射配置:

因为两个表的id字段重复,所以使用别名,将foodtype表的id字段定义为t_id

<!-- 定义食品类和食品的ResultMap -->
<resultMap type="foodType" id="ft_f">
<id column="t_id" property="id"/>
<result column="typename" property="typename"/>
<result column="typedescribe" property="typedescribe"/>
<!-- 食品信息映射 -->
<collection property="food" ofType="com.wqh.hotel.domain.Food">
<id column="id" property="id"/>
<result column="foodName" property="foodName"/>
<result column="price" property="price"/>
<result column="mprice" property="mprice"/>
<result column="img" property="img"/>
<result column="foodType_id" property="foodType_id"/>
<result column="remark" property="remark"/>
</collection>
</resultMap>

collection:映射集合对象;
property:将食品信息映射到哪个集合;
ofType:集合中对象的类型

3、sql语句:

<select id="findAllFoodTypeOrFood" resultMap="ft_f">
select foodtype.id as t_id,foodtype.typename,foodtype.typedescribe,food.* from foodtype,food where foodtype.id=food.foodType_id;
</select>

4、mapper.java:

List<FoodType> findAllFoodTypeOrFood();

5、结果:

mybatis查询(一对多查询)
这里查询到四条分类信息,在第一个分了中有三条食品的信息。