spring - Spring batch xml repositoryitemwriter 模式占位符表单属性
问题描述
需要从属性文件中获取 spring 批处理应用程序的模式名称。MSSQL 数据库的 dev 和 prod 的架构名称不同。
xml中的作业配置如下
<bean id="dataItemWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="assertUpdates" value="true" />
<property name="itemPreparedStatementSetter">
<bean class="org.test.batch.model.ItemStatementMapper" />
</property>
<property name="sql" >
<value>
<![CDATA[
INSERT INTO dbo.EMPLOYEE
(PROJECT_NAME
,APP_NAME
,EMPLOYEE_NAME)
values (?,?,?)
]]>
</value>
</property>
<property name="dataSource" ref="dataDataSource" />
</bean>
模式名称“dbo”应从属性文件中检索,以便可以在配置中更改 DEV 和 PROD
解决方案
我认为不需要将值放在CDATA
块中,您的查询中没有特殊的 xml 字符。这是一个例子:https ://github.com/spring-projects/spring-batch/blob/8762e3411557aaf887867f8d8594b01127538cb1/spring-batch-core/src/test/resources/org/springframework/batch/core/resource/ListPreparedStatementSetterTests-context .xml#L25。所以在你的情况下,它应该是这样的:
<bean id="dataItemWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="assertUpdates" value="true" />
<property name="itemPreparedStatementSetter">
<bean class="org.test.batch.model.ItemStatementMapper" />
</property>
<property name="sql" >
<value>
INSERT INTO dbo.EMPLOYEE (PROJECT_NAME ,APP_NAME ,EMPLOYEE_NAME) values (?,?,?)
</value>
</property>
<property name="dataSource" ref="dataDataSource" />
</bean>
推荐阅读
- payeezy - 某些客户端的错误 hmac_helper#196 但并非所有客户端
- java - PulsarClientException:连接已关闭 - 已验证网络、防火墙、Pulsar 令牌和角色正确
- python - 如何在许多差异位置插入一长串“返回”变量?
- java - 如何在绘图应用程序中实现 UNDO 和 REDO 按钮?科特林
- tensorflow - 带有圆柱网格的 3D 自动编码器
- wordpress - Wordpress 无限重定向和“您的上传路径无效或不存在”
- machine-learning - 在 pytorch 中修改预训练模型时,旧的权重会重新初始化吗?
- node.js - 解析器中的命名 Apollo Server 字段是什么?它是如何工作的?
- quarkus - 为什么 quarkus 需要为 Build Project 配置数据库
- xml - 如何使用 tinyxml2 从包含特定子项的 xml 树中选择节点