# DBAPI如何向数据库插入多条数据

# 业务背景

  • 假设我们在mysql有如下一张学生信息表,需要通过接口插入数据,且可以插入多条​,应该如何实现呢?

# 创建API

  • 在基本信息标签页,Content-Type一定要选择application/json,这样API才能通过http body传递参数,然后请求参数示例填写json参数如下
{
   "students": [{
           "name": "林志玲",
           "age": 20
       }, {
           "name": "蔡依林",
           "age": 30
       }
   ]
}

  • 执行器标签填写SQL如下,使用类似mybatis的动态SQL语法,同时我们开启事务
insert into student(name,age) VALUES
<foreach open="" close="" collection="students" separator="," item="item" index="index">
(#{item.name}, #{item.age})
</foreach>

  • 保存API并发布上线

# 请求测试

  • 在接口请求测试页面请求测试。可以看到接口访问成功,返回结果显示插入了2行数据

  • 我们来到数据库验证发现确实多了2条数据

# 原理

  • 那这段动态sql的逻辑是怎么样的呢?
  • 我们编辑API,进入SQL调试页面,在右侧输入我们刚才请求的参数,点击解析sql按钮,发现标签语法被解析出来的sql就是mysql批量插入的sql语句