mybatis中collection的column传入多个参数值:
标签属性:
- property: resultMap返回实体类中字段和result标签中的property一样
- column: 数据库的列名或者列标签别名,是关联查询往下一个语句传送值。注意:在处理组合键时,您可以使用column=“{prop1=col1,prop2=col2}”这样的语法,设置多个列名传入到嵌套查询语句。这就会把prop1和prop2设置到目标嵌套选择语句的参数对象中。
- javaType: 一般为ArrayList或是java.util.List
- ofType: java的实体类,对应数据库表的列名称,即关联查询select对应返回的类
- select: 执行一个其他映射的sql语句返回一个java实体类型
代码:
public class Order{
private Integer id;
private String orderNo;
private BigDecimal amout;
private List<Food> foodList;
}
public class Food{
private String foodName;
private Integer foodNum;
private BigDecimal price;
}
<resultMap id="OrderMap" type="com.buchirourou.entity.Order">
<result property="id" column="id"></result>
<result property="order_no" column="orderNo"></result>
<result property="amout" column="amout"></result>
<collection property="foodList"
ofType="com.buchirourou.entity.Food"
column="{orderId=id,orderNo=order_no}"
javaType="arraylist"
select="com.buchirourou.mapper.FoodMapper.findFood">
</collection>
</resultMap>
<resultMap id="FoodMap" type="com.buchirourou.entity.Food">
<result property="food_name" column="foodName"></result>
<result property="food_num" column="foodNum"></result>
<result property="price" column="price"></result>
</resultMap>
<select id="findOrder" resultMap="OrderMap">
SELECT
id,
orderNo as order_no,
amout
FROM t_order
</select>
<select id="findFood" resultMap="FoodMap">
SELECT
food_name,
food_num,
price
FROM t_food
WHERE
order_id = #{orderId}
AND order_no = #{orderNo}
</select>
column="{orderId=id,orderNo=order_no}"
中orderId对应findFood中#{orderId}
的参数名称,id对应findOrder中select的id
,若在查询时给字段加别名正如orderNo对应findFood中#{orderNo}的参数名称,order_no对应findOrder中orderNo的别名order_no