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]。
浙公网安备 33010602011771号