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

一、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.运行结果

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C 知识积累 回车与换行 Linux C 语法分析

目录 回车与换行一.知其然二.知其所以然 关键字&#xff0c;操作符和函数区别1&#xff1a;关键字2&#xff1a;操作符3&#xff1a;函数 命令行参数argv原码补码补码加法 Linux C 语法分析结构体指针类型函数宏定义其他 const语法整理 回车与换行 一.知其然 \n是换行&#x…

【矩阵的创建与基本运算】——matlab基础

目录索引 创建矩阵&#xff1a;zeros()&#xff1a;ones&#xff1a;eye()&#xff1a;magic()&#xff1a;引号创建序列矩阵&#xff1a;linspace()&#xff1a; 加减与数乘&#xff1a;其他运算&#xff1a;指数运算&#xff1a;*exp()&#xff1a;* 点式运算&#xff1a; 创…

SpringBoot 整合 RabbitMQ demo

Rabbit Windows安装教程 本文只做Demo案例的分享&#xff0c;具体只是需自行百度 一、生产者 1.application.properties 配置Rabbit的基本信息 #rabbit 主机IP spring.rabbitmq.host127.0.0.1 #rabbit 端口 spring.rabbitmq.port5672 #rabbit 账号 可自行创建 这里是默认的 …

springboot与rabbitmq的整合【演示5种基本交换机】

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏&#xff1a;后端专栏 &#x1f4e7;如果文章知识点有错误的地方&#xff0c;…

Makefile:6: *** missing separator. Stop.

Makefile:2: *** missing separator. Stop. Windows下用VS CODE编写makefile文件&#xff0c;编译报出这个错误 可以查看一下VS CODE左下角&#xff0c;如果是下图“空格&#xff1a;4”这样&#xff0c;需要更改一下。 在“空格&#xff1a;4”上左键单击一下&#xff0c;在…

涂鸦智能打造专业家庭智能生活助手,实现人机交互升级

近年来&#xff0c;智能家居设备的品类不断拓展&#xff0c;同时&#xff0c;人们对AI与智能家居的联动愈发憧憬。自然语言交互是未来人机交互的主要趋势之一&#xff0c;其关键在于使AI具备主动理解信息的能力&#xff0c;让用户的交互更轻松。如何将智能场景的交互变得更“善…

【动手学深度学习】--15.含并行连结的网络GoogLeNet

文章目录 含并行连结的网络GoogLeNet1.Inception块2.GoogLeNet模型3.训练模型 含并行连结的网络GoogLeNet 学习视频&#xff1a;含并行连结的网络 GoogLeNet / Inception V3【动手学深度学习v2】 官方笔记&#xff1a;含并行连结的网络&#xff08;GoogLeNet&#xff09; 1.…

基于Web API drap事件的简单拖拽功能

基于Web API drap事件的简单拖拽功能 效果示例图代码示例 效果示例图 代码示例 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style type"text/css">* {padding: 0px;margin: 0px;box-s…

单例模式、指令重排序、锁、有序性

今天在回顾单例模式时&#xff0c;我们都知道懒汉式单例中有一种叫做双重检查锁的单例模式。 我们来看下下面的代码有没有问题&#xff1a; 这段代码我们可以看到&#xff0c;即优化了性能&#xff0c;在多线程情况下&#xff0c;如果实例不为空了&#xff0c;则直接返回了。…

Vue成绩案例实现添加、删除、显示无数据、添加日期、总分均分以及数据本地化等功能

一、成绩案例 ✅✅✅通过本次案例实现添加、删除、显示无数据、添加日期、总分均分以及数据本地化等功能。 准备成绩案例模板&#xff0c;我们需要在这些模板上面进行功能操作。 <template><div class"score-case"><div class"table">…

Rsync(二十七)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、特性 三、应用场景 四、数据的同步方式 五、rsync传输模式 六、rsync应用 七、rsync 命令 1. 格式 1.1 作为远程命令 1. 2 作为rsync服务 2. 选项 3.…

解密:GPT-4框架与训练过程,数据集组成,并行性的策略,专家权衡,推理权衡等细节内容

大家好&#xff0c;我是微学AI&#xff0c;今天给大家解密一下GPT-4框架与训练过程&#xff0c;数据集组成&#xff0c;并行性的策略&#xff0c;专家权衡&#xff0c;推理权衡等细节内容。2023年3月14日&#xff0c;OpenAI发布GPT-4&#xff0c;然而GPT-4的框架没有公开&#…

【ArcGIS Pro二次开发】(46):要素类从上到下、从左到右排序

要素类经过编辑之后&#xff0c;【OBJECTID】字段会变得不规律。应部分网友要求&#xff0c;做了这个从上到下、从左到右排序的工具。 不过后来在ArcGIS Pro中发现了一个【排序】工具&#xff0c;已经可以完美实现这个功能需求&#xff0c;发现自己做了个白工。 不过做了不能白…

【最新教程】树莓派安装系统及VNC远程桌面连接

大家好&#xff0c;今天就不给大家介绍PYTHONL ,今天我作为一个刚入坑树莓派的小白&#xff0c;整理了一下自己安装树莓派的整个过程&#xff0c;分享给大家。 目录 树莓派 准备工作&#xff1a; 树莓派远程ssh失败access denied 原因&#xff1a; 树莓派系统安装 1、下载…

hive常用方法

日期类 Date_sub 日期进行加减 &#xff0c;正的减&#xff0c;负的加 select current_date -- 当前日期,date_sub(current_date,1) -- 前一日,date_sub(current_date,-1) -- 后一日 from edw.test;字符类 split 该函数是分割字符串 &#xff0c;按照…

ChatGPT火热之下的冷思考

作为一款基于人工智能的自然语言处理(NLP)​​聊天机器人​​程序&#xff0c;ChatGPT通过大量来自互联网的文本进行训练&#xff0c;并使用深度学习和机器学习算法来理解用户的问题并提供准确的回答。并且&#xff0c;ChatGPT还内置了情感分析、关键字提取和实体识别等功能&am…

【QT】——QListWidget的使用

目录 1.QListWidget和QListWidgetItem 2.外观 2.1列表模式 2.2图标模式 3.常用接口 4.示例 删除列表项 添加列表项 1.QListWidget和QListWidgetItem QListWidget 是qt中的列表框控件&#xff0c;它用于显示多个列表项&#xff0c;列表项对应的类是QListWidgetItem. Q…

qt和vue交互

1、首先在vue项目中引入qwebchannel /******************************************************************************** Copyright (C) 2016 The Qt Company Ltd.** Copyright (C) 2016 Klarlvdalens Datakonsult AB, a KDAB Group company, infokdab.com, author Milian …

MobPush Android For Unity

本文档以unity2020.3.41演示 集成准备 注册账号 使用MobSDK之前&#xff0c;需要先在MobTech官网注册开发者账号&#xff0c;并获取MobTech提供的AppKey和AppSecret&#xff0c;详情可以点击查看注册流程 下载.unitypackage包 打开 Github 下载 MobPush-For-Unity 项目&am…

java项目之贝儿米幼儿教育管理系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的贝儿米幼儿教育管理系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java…