Spring Batch之读数据库—JdbcPagingItemReader(四十一)

news2024/11/26 13:36:41

一、JdbcPagingItemReader

        Spring Batch框架提供了对JDBC分页读取支持的组件JdbcPagingItemReader。JdbcPaginItemReader实现ItemReader接口,核心作用是将数据库中记录通过分页的方式转换为Java对象。在JdbcPagingItemReader将数据库记录转换为Java对象是主要有两步工作:首先根据SimpleJdbcTemplate与PagingQueryProvider从数据库中根据分页的大小获取结果集ResultSet;其次使用RowMapper将结果集ResultSet转换为Java对象,具体步骤见下:

JdbcPagingItemReader关键接口、类说明:

关键类说明
DataSource提供读取数据库的数据源信息
SimpleJdbcTemplate提供标准的Spring的jdbc模板,根据分页信息查询数据库,返回排序后的结果集ResultSet
PagingQueryProvider根据分页信息生成每次需要查询的SQL语句
RowMapper负责将结果集ResultSet转换为Java对象

JdbcPagingItemReader关键属性:

属性类型说明
dataSourceDataSource数据源,通过该属性指定使用的数据库信息
fetchSizeint

设置ResultSet每次向数据库取的行数;setFetchSize的意思是当调用rs.next时,ResultSet会一次性从服务器上取多少行数据回来,这样在下次rs.next时,可以直接从内存中取出数据而不需要网络交互,提高了效率。

默认值:-1

queryProviderPagingQueryProvider分页查询SQL语句生成器,负责根据分页信息生成每次需要执行的SQL语句
parameterValuesMap<String,Object>设置定义的SQL语句中的参数
rowMapperRowMapper将结果集ResultSet转换为指定的Pojo对象类;需要实现RowMapper接口,默认可以使用BeanPropertyRowMapper;
pageSizeint

分页大小

默认值:10

        Spring Batch框架为了支持PagingQueryProvider,根据不同的数据库类型提供多种实现,为了便于开发者屏蔽不同的数据库类型,Spring Batch框架提供了友好的工厂类SqlPagingQueryProviderFactoryBean为不同的数据库类提供PagingQueryProvider的实现类。

SqlPagingQueryProviderFactoryBean关键属性:

属性类型说明
dataSourceDataSource数据源,通过该属性指定使用的数据库信息
databaseTypeString指定数据库的类型,如果不显示指定该类型,则自动通过dataSource属性获取数据库的信息
ascendingBoolean

查询语句是否是升序。

默认值:true

fromClauseString定义查询语句的from部分
selectClauseString定义查询语句的select部分
sortKeyString定义查询语句排序的关键字段
whereClauseString定义查询语句的where字段

         使用JdbcPagingItemReader至少需要配置dataSource、queryProvider、rowMapper三个属性。

二、项目举例

1.项目框架

2.代码实现

D:\ideaWorkplace(旧)\spring-batch\src\main\java\com\xj\demo32\BatchMain.java:

D:\ideaWorkplace(旧)\spring-batch\src\main\java\com\xj\demo32\CreditBill.java:

D:\ideaWorkplace(旧)\spring-batch\src\main\java\com\xj\demo32\CreditBillProcessor.java:

D:\ideaWorkplace(旧)\spring-batch\src\main\java\com\xj\demo32\CreditBillRowMapper.java:

D:\ideaWorkplace(旧)\spring-batch\src\main\java\com\xj\demo32\DummyCreditItemWriter.java:

D:\ideaWorkplace(旧)\spring-batch\src\main\resources\demo32\job\demo32-job.xml:

D:\ideaWorkplace(旧)\spring-batch\src\main\resources\demo32\job\demo32-jobContext.xml:

D:\ideaWorkplace(旧)\spring-batch\src\main\resources\demo32\db\create-tables-mysql.sql:

D:\ideaWorkplace(旧)\spring-batch\src\main\resources\properties\batch-mysql.properties:

3.运行结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/773697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈KNX协议智能照明系统在某图书馆中的应用

安科瑞 华楠 摘要&#xff1a;文章介绍了KNX/EIB智能照明控制系统的组成&#xff0c;结合工程实例&#xff0c;介绍了应用KNX/ EIB技术&#xff0c;进行智能照明控制系统方案设计的方法和原理&#xff0c;细致深入的对这一个系统在图书馆类建筑应用的节能性与便利性。 关键词&…

Jason Arbon提问Claude 2.0,全球现在有多少测试人员/有多少条测试用例?答案出乎意料

相信在大家的心目中&#xff0c;ChatGPT无疑是AI届的扛把子&#xff0c;自打推出以来&#xff0c;一骑绝尘&#xff0c;问谁谁都说好&#xff0c;问啥啥都能干。无论是国外的Google Bard、还是国内的文心一言、通义千问等都不是他的一合之敌。但是最近Anthropic新推出的Claude …

Python:基于matplotlib与mayavi的3D可视化(点云+等值面)

文章目录 一、3D可视化常用方法二、三维图像在numpy、cv2、以及tifffile.imread中通道的区别三、项目实战 1、基于matplotlib的3D可视化&#xff08;体素体&#xff09; 2、基于mayavi的3D可视化2.0、mayavi使用指南&#xff08;鼠标&#xff09;2.1、mlab.points3d()参数详解…

瀑布流布局(multi-column多列布局)

效果展示&#xff1a; 瀑布流布局是网页设计常见的一种布局&#xff0c;一般用于图片多列展示。列宽固定&#xff0c;图片根据自身高度自适应交错排列。 特点&#xff1a; 等宽不等高&#xff0c;多列布局&#xff1b;随着页面滚动条向下滚动&#xff0c;不断加载数据块并附加…

浅谈一下企业IT运维痛点以及好用的运维软件推荐

随着IT建设的不断深入和完善&#xff0c;IT资产越来越多&#xff0c;IT运维管理越发显得重要。但不少企业不知道如何有效进行IT运维&#xff0c;不知道如何更好进行IT运维&#xff0c;今天我们就来一起浅谈一下企业IT运维痛点&#xff0c;以及给大家推荐一款好用的运维管理软件…

国内外接口文档工具哪家强?ApiManager-在线接口文档管理工具

下面是关于接口文档工具-在线接口文档管理工具 接口文档是贯穿整个开发项目流程中的规范&#xff0c;前后端开发需要在开发前期进行接口定义并形成文档&#xff0c;测试人员在功能测试和接口测试的环节也需要对这些接口文档进行测试。 然而随着开发版本迭代&#xff0c;很多接…

Hadoop——Windows系统下Hadoop单机环境搭建

为了便于开发&#xff0c;我在本地Windows系统进行Hadoop搭建。 我使用的版本&#xff1a;hadoop-2.7.0。其他版本也可&#xff0c;搭建流程基本一样&#xff0c;所以参考这个教程一般不会有错。 1、下载安装包和插件 安装包hadoop-2.7.0.tar.gz 必要插件winutils-master 2、…

JAVA15个常见面试题

下面是一些常见的Java面试题及答案&#xff1a; Java中的值传递和引用传递有什么区别&#xff1f; Java中的参数传递方式都是值传递&#xff0c;但是对于引用类型的参数&#xff0c;传递的是对象的引用副本。 什么是Java中的面向对象编程&#xff1f; 面向对象编程是一种编程范…

【产品设计】微信小程序如何做好“授权”设计?

授权登录降低了用户注册账号时的操作成本&#xff0c;减少了产品的获客门槛。在本文中&#xff0c;作者结合案例&#xff0c;盘点了微信小程序授权登录设计中需要注意的几点问题&#xff0c;并对功能设计背后的设计思路与原理进行了简要的分析 01 openID 这是微信生态圈中&…

# Linux下用mailx发送邮件,邮件内容在用户端变成了以为.bin为扩展名的邮件附件的问题解决

Linux下用mailx发送邮件&#xff0c;邮件内容在用户端变成了以为.bin为扩展名的邮件附件的问题解决 文章目录 Linux下用mailx发送邮件&#xff0c;邮件内容在用户端变成了以为.bin为扩展名的邮件附件的问题解决1 发送邮件范例&#xff1a;2 文件范例参考&#xff08;/root/loll…

Microsoft Outlook如何自动归类邮件

右键点击 Inbox→New Folder 填写文件夹名称 temp Move→Rules→Create Rule Select Folder 点击temp→OK

Linux 内核概念和学习详解

1、前言 本文主要讲解什么是Linux内核&#xff0c;以及通过多张图片展示Linux内核的作用与功能&#xff0c;以便于读者能快速理解什么是Linux内核&#xff0c;能看懂Linux内核。 拥有超过1300万行的代码&#xff0c;Linux内核是世界上最大的开源项目之一&#xff0c;但是内核…

css 3个元素行排列,前2个元素靠左,第三个元素靠右

上效果&#xff1a; 实现方式&#xff1a; display:flex &#xff0c; 行排列&#xff0c;默认靠左对齐&#xff0c; 然后让第三个元素自动占满剩余的空间&#xff1a;flex-grow:1&#xff0c;text-align:end // wxml <!-- 支付方式--><view class"payment_…

尚无忧多门店自助宠物洗护系统美容宠物寄养系统小程序

技术框架&#xff1a;thinkphpmysql跨平台uniapp 完全开源无需授权 支持&#xff1a; 多门店商家入驻&#xff0c;管理 门店自助设备预约 电子门锁扫码开门 会员开购买&#xff0c;会员余额充值 自助订单和宠物预约订单管理 宠物添加管理 洗护知识文章设置 <templa…

套餐管理模块开发 -- 手把手教你做ssm+springboot入门后端项目黑马程序员瑞吉外卖(六)

文章目录 前言一、新增套餐1. 需求分析2. 数据模型3. 代码开发4. 功能测试 二、套餐信息分页查询1. 需求分析2. 代码开发3. 功能测试 三、删除套餐1. 需求分析2. 代码开发3. 功能测试 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#x…

推荐模型——逻辑回归

文章目录 1. 逻辑回归特点2. 基于逻辑回归的推荐流程3. 逻辑回归模型的数学形式4. 逻辑回归模型的训练方法5. 逻辑回归模型的优势5.1 数学含义上的支撑5.2 可解释性强5.3 工程化的需要 6. 逻辑回归的局限性 1. 逻辑回归特点 逻辑回归是融合多种特征的推荐模型。 相比于协同过…

J Roulette(“范式杯”2023牛客暑期多校训练营1)

目录 题目描述&#xff1a; 解题思路&#xff1a; 解题代码&#xff1a; 题目描述&#xff1a; 解题思路&#xff1a; 注&#xff1a;其中对于取模过程中用到了费马小定理&#xff0c;可参考如下博客&#xff1a; (3条消息) 费马小定理及其应用_CTGU-Yoghurt的博客-CSDN博客 …

LiveGBS流媒体平台国标GB/T28181功能-国标级联到海康大华宇视华为等第三方国标平台上级不支持H265/HEVC支持强制推送H264编码

LiveGBS国标级联到海康大华宇视华为等第三方国标平台上级不支持H265/HEVC支持强制推送H264编码 1、背景2、什么是GB/T28181级联3、获取上级接入配置信息3.1、接入第三方国标平台3.2、接入LiveGBS示例 4、配置国标级联4.1、国标级联菜单4.2、添加上级平台4.3、编辑上级平台级联4…

微服务保护---Sentinel(雪崩问题/流量控制/隔离和降级)

目录 1.雪崩问题 1.1.解决雪崩问题的常见方式有四种 2.什么是Sentinel 2.1.安装Sentinel控制台 2.2.微服务整合Sentinel 3.流量控制 3.1.簇点链路 3.2.快速入门 3.2.1.示例 3.2.2.利用jmeter测试 3.3.流控模式 3.3.1.关联模式 3.3.2.链路模式 3.3.3.总结 3.4.流控…

如何在 Ubuntu 20.04 桌面上启用/禁用 wayland

Wayland 是一种通信协议&#xff0c;指定显示服务器与其客户端之间的通信。 默认情况下&#xff0c;Ubuntu 20.04 桌面不会启动 Wayland&#xff0c;而是加载 Xorg 显示服务器X11。 在本教程中您将学习&#xff1a; 如何启用 Wayland如何禁用 Wayland 类别要求、约定或使用的…