mapper.xml代码如下:

<insert id="insertBatch" parameterType="java.util.List">
  <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
    SELECT SCOPE_IDENTITY() AS id
  </selectKey>
  INSERT INTO table_name (field1, field2, field3, field4, field5)
  VALUES
  <foreach collection="list" item="item" separator=",">
    (#{item.field1}, #{item.field2}, #{item.field3}, #{item.field4}, #{item.field5})
  </foreach>
</insert>

Java代码如下:

public void insertBatch(List<Entity> list) {
  try {
    Connection conn = dataSource.getConnection();
    CallableStatement cstmt = conn.prepareCall("{call insert_batch(?, ?, ?, ?, ?, ?)}"); // 存储过程名
    for (Entity entity : list) {
      cstmt.setString(1, entity.getField1());
      cstmt.setString(2, entity.getField2());
      cstmt.setInt(3, entity.getField3());
      cstmt.setDate(4, entity.getField4());
      cstmt.setDouble(5, entity.getField5());
      cstmt.registerOutParameter(6, Types.INTEGER); // 注册输出参数
      cstmt.addBatch();
    }
    cstmt.executeBatch();
    ResultSet rs = cstmt.getResultSet();
    while (rs.next()) {
      int id = rs.getInt(1); // 获取回显的id
      // do something
    }
    rs.close();
    cstmt.close();
    conn.close();
  } catch (SQLException e) {
    e.printStackTrace();
  }
}
``
假设sqlserver数据库中一张表有5个字段java代码中通过存储过程批量插入到该表并回显id的操作并显示mapperxml的代码

原文地址: https://www.cveoy.top/t/topic/hbZo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录