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

以下是一个示例的业务类,使用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获取分页信息,判断是否还有更多数据。然后遍历数据进行插入操作,在插入时捕获异常,当遇到重复数据时跳过继续插入。

备注:仅供参考

retainAll 和 removeAll用法

retainAll和removeAll是Java集合框架中List接口的两个方法,用于对集合进行元素的筛选和删除操作。

retainAll方法用于保留集合中与指定集合相同的元素,即将集合中不在指定集合中的元素删除。其语法如下:

java
boolean retainAll(Collection<?> c)
示例:

java
List<String> list1 = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
List<String> list2 = new ArrayList<>(Arrays.asList("B", "C", "E"));

list1.retainAll(list2);
System.out.println(list1); // 输出:[B, C]
在上述示例中,list1和list2分别包含一些字符串元素。通过调用list1.retainAll(list2),将保留list1中与list2相同的元素,即删除list1中不在list2中的元素。最终输出的结果是[B, C]。

removeAll方法用于删除集合中与指定集合相同的元素,即将集合中在指定集合中的元素删除。其语法如下:

java
boolean removeAll(Collection<?> c)
示例:

java
List<String> list1 = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
List<String> list2 = new ArrayList<>(Arrays.asList("B", "C", "E"));

list1.removeAll(list2);
System.out.println(list1); // 输出:[A, D]
在上述示例中,list1和list2分别包含一些字符串元素。通过调用list1.removeAll(list2),将删除list1中与list2相同的元素,即删除list1中在list2中的元素。最终输出的结果是[A, D]。
posted @ 2023-09-07 15:13  我的心儿  阅读(70)  评论(0)    收藏  举报