Mybatis一对多中的SQL(查询、删除、更新、插入)及表的设计

1.1现实模型

一个Teacher有多个Student,一个Student有一个Teacher,通过Teacher来管理Student

1.2实体类

Teacher

public class Teacher
{
    private int id;
    private String name;
    private Set<Student> stus=new HashSet<Student>();
}

Student

public class Student
{
    private int id;
    private String name;
}

1.3表的设计

teacher

t_id t_nam
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MyBatis可以通过foreach标签来处理一对多的批量插入。 假设我们有两个表:订单表(order)和订单商品表(order_item),它们之间是一对多的关系,一个订单可以对应多个订单商品。我们需要在插入一个订单的同时,批量插入它所对应的多个订单商品。 首先,我们需要在Order实体类添加一个List<OrderItem>类型的属性,表示它所对应的多个订单商品。 ```java public class Order { private Integer id; private String orderNo; private List<OrderItem> orderItems; // getter/setter } ``` 然后,在OrderMapper.xml,我们可以使用foreach标签来实现批量插入: ```xml <insert id="insertOrder" parameterType="Order"> insert into order(order_no) values (#{orderNo}) </insert> <insert id="insertOrderItems" parameterType="Order"> <foreach collection="orderItems" item="item" separator=";"> insert into order_item(order_id, item_name, item_price) values (#{id}, #{item.name}, #{item.price}) </foreach> </insert> ``` 其,第一个insert标签用于插入订单信息,第二个insert标签用于批量插入订单商品信息。在第二个insert标签,我们使用了foreach标签,遍历了Order实体类的orderItems属性,将每个订单商品插入到数据库。 最后,我们可以在OrderMapper.java定义一个insertOrder方法,该方法会依次调用insertOrder和insertOrderItems两个SQL语句: ```java public interface OrderMapper { int insertOrder(Order order); } ``` 调用方式如下: ```java Order order = new Order(); order.setOrderNo("20201015001"); List<OrderItem> orderItems = new ArrayList<>(); orderItems.add(new OrderItem("商品1", 100)); orderItems.add(new OrderItem("商品2", 200)); orderItems.add(new OrderItem("商品3", 300)); order.setOrderItems(orderItems); orderMapper.insertOrder(order); ``` 这样,就可以实现一对多的批量插入了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值