Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring批处理xml repositoryitemwriter架构占位符表单属性_Spring_Spring Mvc_Spring Data_Spring Batch - Fatal编程技术网

Spring批处理xml repositoryitemwriter架构占位符表单属性

Spring批处理xml repositoryitemwriter架构占位符表单属性,spring,spring-mvc,spring-data,spring-batch,Spring,Spring Mvc,Spring Data,Spring Batch,需要从spring批处理应用程序的属性文件中获取架构名称。 其中,对于MSSQL数据库,dev和prod的架构名称不同 xml中的作业配置如下所示 <bean id="dataItemWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter"> <property name="assertUpdates" value="true" /> <property n

需要从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应该从proprieties文件中检索,以便DEV和PROD可以在配置中更改它

我不认为需要将值放入CDATA块,查询中没有特殊的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>
           INSERT INTO dbo.EMPLOYEE (PROJECT_NAME ,APP_NAME ,EMPLOYEE_NAME) values (?,?,?)
        </value>
    </property>
    <property name="dataSource" ref="dataDataSource" />
</bean>

这回答了你的问题吗?但在这里,我在CDATA内的查询中进行了替换。占位符将不起作用。我不认为有必要将值放入CDATA块,查询中没有特殊的xml字符。下面是一个例子:。如果可能发生这种情况,您可以将查询外部化到属性文件中,在该文件中进行替换。可以通过删除CDATA来执行此操作。谢谢你这么说。我加了一个答案,请接受。