***********任务需求*********************************
从A系统中查询出信息插入到B系统数据库中
知识点1---------不在同一个数据库操作
1.因为不止在一个数据库中操作,所以要配置多个数据源.
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
p:removeAbandoned="${jdbc.removeAbandoned}" p:removeAbandonedTimeout="${jdbc.removeAbandonedTimeout}"
p:maxWait="${jdbc.maxWait}"
p:username="${jdbc.username}" p:password="${jdbc.password}"/>
一开始的想法是再复制一个,如下
<context:property-placeholder location="classpath:jdbc1.properties"/>
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
p:removeAbandoned="${jdbc.removeAbandoned}" p:removeAbandonedTimeout="${jdbc.removeAbandonedTimeout}"
p:maxWait="${jdbc.maxWait}"
p:username="${jdbc.username}" p:password="${jdbc.password}"/>
但是
Spring容器仅允许最多定义一个PropertyPlaceholderConfigurer(或<context:property-placeholder/>),其余的会被Spring忽略掉
于是成了这样
<context:property-placeholder location="classpath:jdbc*.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
p:removeAbandoned="${jdbc.removeAbandoned}" p:removeAbandonedTimeout="${jdbc.removeAbandonedTimeout}"
p:maxWait="${jdbc.maxWait}"
p:username="${jdbc.username}" p:password="${jdbc.password}"/>
<!-- 第二个数据源 -->
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc1.driverClassName}" p:url="${jdbc1.url}"
p:removeAbandoned="${jdbc1.removeAbandoned}" p:removeAbandonedTimeout="${jdbc1.removeAbandonedTimeout}"
p:maxWait="${jdbc1.maxWait}"
p:username="${jdbc1.username}" p:password="${jdbc1.password}"/>
数据源的配置文件格式大致如下(当然两份文件配置不一样):
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@***.***.***.100:1521:databaseName
jdbc.username=user
jdbc.password=pass
jdbc.maxWait=60000
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=180
实际中可能***.***.***.100是一个数据地址,***.***.***.120是一个数据库地址,
因为使用JdbcTemplate,给其配置一个数据源,刚开始是这样写的:
<bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource1">
<ref local="dataSource1" />
</property>
</bean>
而name="dataSource"中dataSource是预定义的,这样是不行的,然后成了这样
<!-- 第二个数据源的jdbcTemplate配置的数据源 -->
<bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource"> <!--dataSource是预定义的,不能改为dataSource1 -->
<ref local="dataSource1" />
</property>
</bean>
<!-- 第二个数据源jdbcTemplate1 -->
<bean id="accInfoToBfjServiceImpl"
class="cn.com.sandpay.amms.manage.dataSyn.service.impl.AccInfoToBfjServiceImpl">
<property name="jdbcTemplate" ref="jdbcTemplate1" /> <!jdbcTemplate,不能改为dataSource1 -->
</bean>
<!-- 第二个数据源事务管理 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource1" />
</bean>
insert插入,update修改,delete删除需要进行事务管理。!切记!切记!切记!切记!切记!切记
数据源的事务管理:
<!-- <tx:annotation-driven transaction-manager="txManager"/>
这句话的作用是注册事务注解处理器,我这里没有在这里配置,是用注解配置的
@Transactional(value="txManager", propagation=Propagation.REQUIRES_NEW)
public void funName() {}
-->
知识点2-----------------JdbcTemplate的使用
这个因为在前面已经配置好了,这里的使用很简单
方法1
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
方法2
@Autowired private JdbcTemplate jdbcTemplate;
调用
jdbcTemplate.update(insertSql,params)
参数
private static String insertSql = "insert into tab_Name values("?,?,?");
Object[] params = dataList.get(i);
知识点3:-----------一个关于事务管理的,但是不懂,先不写了
从A系统中查询出信息插入到B系统数据库中
知识点1---------不在同一个数据库操作
1.因为不止在一个数据库中操作,所以要配置多个数据源.
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
p:removeAbandoned="${jdbc.removeAbandoned}" p:removeAbandonedTimeout="${jdbc.removeAbandonedTimeout}"
p:maxWait="${jdbc.maxWait}"
p:username="${jdbc.username}" p:password="${jdbc.password}"/>
一开始的想法是再复制一个,如下
<context:property-placeholder location="classpath:jdbc1.properties"/>
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
p:removeAbandoned="${jdbc.removeAbandoned}" p:removeAbandonedTimeout="${jdbc.removeAbandonedTimeout}"
p:maxWait="${jdbc.maxWait}"
p:username="${jdbc.username}" p:password="${jdbc.password}"/>
但是
Spring容器仅允许最多定义一个PropertyPlaceholderConfigurer(或<context:property-placeholder/>),其余的会被Spring忽略掉
于是成了这样
<context:property-placeholder location="classpath:jdbc*.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
p:removeAbandoned="${jdbc.removeAbandoned}" p:removeAbandonedTimeout="${jdbc.removeAbandonedTimeout}"
p:maxWait="${jdbc.maxWait}"
p:username="${jdbc.username}" p:password="${jdbc.password}"/>
<!-- 第二个数据源 -->
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc1.driverClassName}" p:url="${jdbc1.url}"
p:removeAbandoned="${jdbc1.removeAbandoned}" p:removeAbandonedTimeout="${jdbc1.removeAbandonedTimeout}"
p:maxWait="${jdbc1.maxWait}"
p:username="${jdbc1.username}" p:password="${jdbc1.password}"/>
数据源的配置文件格式大致如下(当然两份文件配置不一样):
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@***.***.***.100:1521:databaseName
jdbc.username=user
jdbc.password=pass
jdbc.maxWait=60000
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=180
实际中可能***.***.***.100是一个数据地址,***.***.***.120是一个数据库地址,
因为使用JdbcTemplate,给其配置一个数据源,刚开始是这样写的:
<bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource1">
<ref local="dataSource1" />
</property>
</bean>
而name="dataSource"中dataSource是预定义的,这样是不行的,然后成了这样
<!-- 第二个数据源的jdbcTemplate配置的数据源 -->
<bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource"> <!--dataSource是预定义的,不能改为dataSource1 -->
<ref local="dataSource1" />
</property>
</bean>
<!-- 第二个数据源jdbcTemplate1 -->
<bean id="accInfoToBfjServiceImpl"
class="cn.com.sandpay.amms.manage.dataSyn.service.impl.AccInfoToBfjServiceImpl">
<property name="jdbcTemplate" ref="jdbcTemplate1" /> <!jdbcTemplate,不能改为dataSource1 -->
</bean>
<!-- 第二个数据源事务管理 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource1" />
</bean>
insert插入,update修改,delete删除需要进行事务管理。!切记!切记!切记!切记!切记!切记
数据源的事务管理:
<!-- <tx:annotation-driven transaction-manager="txManager"/>
这句话的作用是注册事务注解处理器,我这里没有在这里配置,是用注解配置的
@Transactional(value="txManager", propagation=Propagation.REQUIRES_NEW)
public void funName() {}
-->
知识点2-----------------JdbcTemplate的使用
这个因为在前面已经配置好了,这里的使用很简单
方法1
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
方法2
@Autowired private JdbcTemplate jdbcTemplate;
调用
jdbcTemplate.update(insertSql,params)
参数
private static String insertSql = "insert into tab_Name values("?,?,?");
Object[] params = dataList.get(i);
知识点3:-----------一个关于事务管理的,但是不懂,先不写了