mybatis collection使用

本文探讨如何在Java开发中利用MyBatis的Collection特性处理一对多关系,通过MyBatis Generator生成的代码实现复用。内容包括定义SmsCommodityOrderDto对象、自定义BaseResultUdfMap、在mapper中定义collection集合以及利用include实现查询条件和字段的复用,展示了Mapper的高扩展性。
摘要由CSDN通过智能技术生成

java开发就要考虑复用,能够复用就用复用,所以呢,通过mybatis generator自动生成的代码,针对一对多的关系怎么处理呢?那么就可以用到collection了。
1.SmsCommodityOrderDto
定义

public class SmsCommodityOrderDto {
   
    private String id;
    private List<SmsCommodityOrder> smsCommodityOrders;
    private SmsOrder smsOrder;
    
    public String getId() {
   
        return id;
    }
    public void setId(String id) {
   
        this.id = id;
    }
    public SmsOrder getSmsOrder() {
   
        return smsOrder;
    }
    public void setSmsOrder(SmsOrder smsOrder) {
   
        this.smsOrder = smsOrder;
    }
    public List<SmsCommodityOrder> getSmsCommodityOrders() {
   
        return smsCommodityOrders;
    }
    public void setSmsCommodityOrders(List
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Mybatis中的Collection标签用于处理一对多的关系,可以将一个查询结果集映射成多个对象,也可以将多个对象映射成一个查询结果集。 使用方法: 1.在mapper.xml文件中编写SQL语句,并使用collection标签进行映射。 例如:查询一个订单及其所有的订单项 ``` <select id="findOrderWithOrderItems" resultType="Order"> select * from orders where id=#{id} <collection property="orderItems" ofType="OrderItem" select="com.example.mapper.OrderItemMapper.findOrderItemsByOrderId" column="order_id"/> </select> ``` 2.在相应的实体类中定义对应的属性,并编写getter和setter方法。 例如:Order.java ``` public class Order { private Integer id; private Date createTime; private List<OrderItem> orderItems; // getter and setter } ``` 3.在相应的Mapper接口中定义对应的方法,并使用@ResultMap注解进行映射。 例如:OrderMapper.java ``` public interface OrderMapper { @ResultMap("orderMap") @Select("select * from orders where id=#{id}") Order findOrderWithOrderItems(Integer id); } ``` 4.在相应的Mapper.xml文件中定义对应的ResultMap。 例如:Order.xml ``` <resultMap id="orderMap" type="Order"> <id column="id" property="id"/> <result column="create_time" property="createTime"/> <collection property="orderItems" ofType="OrderItem"> <id column="id" property="id"/> <result column="product_id" property="productId"/> <result column="quantity" property="quantity"/> </collection> </resultMap> ``` 5.调用Mapper接口中定义的方法进行查询。 例如:测试代码 ``` Order order = orderMapper.findOrderWithOrderItems(1); System.out.println(order.getId()); System.out.println(order.getCreateTime()); List<OrderItem> orderItems = order.getOrderItems(); for (OrderItem orderItem : orderItems) { System.out.println(orderItem.getId()); System.out.println(orderItem.getProductId()); System.out.println(orderItem.getQuantity()); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值