Springboot整合JDBC批量删除修改

repository类

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

@Component
public class EquimentModifyBatch {

    @Autowired
    private JdbcTemplate jdbcTemplate;

/**
 * 批量添加数据
 */
public int batchCreateArticle(final List<Article> articles) {
    String sql = "INSERT INTO article(title, description) VALUES(?, ?)";
    // spring jdbc 帮我们生成了批量插入的 sql 语句, 我们也可以直接使用批量的插入 sql 语句进行批量数据插入
    // return jdbcTemplate.batchUpdate(new String[]{sql});
    return jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
            Article article = articles.get(i);
            preparedStatement.setString(1, article.getTitle());
            preparedStatement.setString(2, article.getDescription());
        }

        @Override
        public int getBatchSize() {
            return articles.size();
        }
    }).length;
}

    /**
     * 批量修改数据
     */
    public int batchModfiyEquipment(final List<Equipment> equipments) {
        if (equipments == null || equipments.size() == 0) {
            return 0;
        }
        String sql = "UPDATE equipment SET status = ? WHERE equ_id = ?";
        // spring jdbc 帮我们生成了批量插入的 sql 语句, 我们也可以直接使用批量的插入 sql 语句进行批量数据插入
        return jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
                Equipment equipment = equipments.get(i);
                preparedStatement.setInt(1, equipment.getStatus());
                preparedStatement.setString(2, equipment.getEquId());
            }

            @Override
            public int getBatchSize() {
                return equipments.size();
            }
        }).length;
    }

扫描二维码关注公众号,回复: 3669515 查看本文章

 /**
     * 批量删除数据
     */

public int batchDeleteArticle(final List<Integer> ids) {
    String sql = "DELETE FROM article WHERE id = ?";
    // spring jdbc 帮我们生成了批量插入的 sql 语句, 我们也可以直接使用批量的插入 sql 语句进行批量数据插入
    return jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
            preparedStatement.setInt(1, ids.get(i));
        }

        @Override
        public int getBatchSize() {
            return ids.size();
        }
    }).length;

}

}

service层

equipments = equipmentService.getEquiByRedis();// 从缓存中获取所有设备
        // 循环处理每一台设备
        for (Equipment equipment : equipments) {
            String equId = equipment.getEquId();
            int equStatus = UnionPayHeartbeatUtil.getEquStatus(equId, configService.getEquipmentHeartbeatTimeout(),
                    client);
            EquipmentOffline equipmentOffline = get(equId, listNotRecovered);
            if (-1 == equStatus) {
                if (null == equipmentOffline) {
                    equipmentOffline = equipmentOfflineService.offline(equId, "", "");
                } else {
                    if (equipment.getStatus() != equStatus) {
                        equipment.setStatus(-1);
                        if (equipment.getUploadStatus() != -1) {
                            equipment.setUploadStatus(-1);
                        }
                        equipmentModifyList.add(equipment);
                    }
                }
            } 
        }

        equimentModifyBatch.batchModfiyEquipment(equipmentModifyList);

猜你喜欢

转载自blog.csdn.net/U2133048/article/details/83182273