pagehelper分页框架进行定时跑批分页 在插入与sql语句的编写,当插入有库中有报异常显示重复数据跳过继续插入 写一个业务类示例

发布时间 2023-09-07 15:18:35作者: 我的心儿

以下是一个示例的业务类,使用PageHelper分页框架进行定时跑批分页插入操作,并在遇到重复数据时跳过继续插入:

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BatchInsertService {
    @Autowired
    private YourMapper yourMapper;

    public void batchInsertData() {
        int pageNum = 1;
        int pageSize = 100;
        boolean hasMoreData = true;

        while (hasMoreData) {
            // 使用PageHelper进行分页设置
            PageHelper.startPage(pageNum, pageSize);

            // 调用yourMapper的查询方法获取一页的数据
            List<YourEntity> dataList = yourMapper.getDataList();

            // 使用PageInfo获取分页信息,判断是否还有更多数据
            PageInfo<YourEntity> pageInfo = new PageInfo<>(dataList);
            hasMoreData = pageInfo.isHasNextPage();

            // 遍历数据进行插入操作
            for (YourEntity entity : dataList) {
                try {
                    // 调用yourMapper的插入方法进行数据插入
                    yourMapper.insertData(entity);
                } catch (Exception e) {
                    // 当插入有库中有报异常显示重复数据时,跳过继续插入
                    System.out.println("插入数据出现异常:" + e.getMessage());
                    continue;
                }
            }

            // 下一页
            pageNum++;
        }
    }
}






在这个示例中,我们假设已经有一个名为YourMapper的Mapper接口,其中包含了获取数据列表和插入数据的方法。你需要根据实际情况修改代码中的YourEntity、YourMapper、getDataList()和insertData()。

在batchInsertData()方法中,我们使用PageHelper.startPage()方法设置分页参数,然后循环通过Mapper查询一页的数据。使用PageInfo获取分页信息,判断是否还有更多数据。然后遍历数据进行插入操作,在插入时捕获异常,当遇到重复数据时跳过继续插入。

备注:仅供参考