數據庫交接項目隨筆


項目用的純spring框架,主要實現的是將一個數據庫的數據(幾張表)提存到另一數據庫(一張表),並設置了實時任務。

spring 里的配置:applicationContext-src.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-autowire="byName" default-lazy-init="false">

<!-- component-scan自動搜索@Component , @Controller , @Service , @Repository等標注的類 -->
<context:component-scan base-package="com.**.task"/>

<bean id="run" class="com.wonders.qlyg.engine.task.Run">
<property name="taskMap" ref="taskMap" />
</bean>

<bean id="taskMap" class="java.util.LinkedHashMap">
<constructor-arg>
<map>
<entry key="yzData" value-ref="yzData" />
</map>
</constructor-arg>
</bean>

</beans>
根據bean 的ref 找到指定的bean

yangzhong-task.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-autowire="byName" default-lazy-init="false">

<!-- component-scan自動搜索@Component , @Controller , @Service , @Repository等標注的類 -->
<context:component-scan base-package="com.**.task"/>

<bean id="yzData" class="com.wonders.qlyg.engine.task.ExchangeScheduler">
<constructor-arg index="0" value="揚中" />
<constructor-arg index="1" value="2011-08-28 11:57" /> <!--啟動時間 -->
<constructor-arg index="2" value="1" /> <!--間隔時間 -->
<constructor-arg index="3" value="day" /> <!--間隔時間單位 -->
<constructor-arg index="4" value="src/config/exchange/myexchange_yangzhong.xml" /> <!--數據交換xml -->
<constructor-arg index="5"> <!-- 交換用的Manager -->
<ref bean="yZDirDatabaseManager" />
</constructor-arg>
<constructor-arg index="6"> <!-- 交換用的Manager -->
<ref bean="baseSrcManager" />
</constructor-arg>
</bean>

</beans>
其他配置

applicationContext-src.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
default-autowire="byName" default-lazy-init="false">

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="location" value="classpath:config/spring/jdbc.properties"/>
</bean>
<!--
<bean id="srcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${src.jdbc.driver}"/>
<property name="url" value="${src.jdbc.url}"/>
<property name="username" value="${src.jdbc.username}"/>
<property name="password" value="${src.jdbc.password}"/>
</bean>
-->
<bean id="srcDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${src.jdbc.driver}" />
<property name="url" value="${src.jdbc.url}" />
<property name="username" value="${src.jdbc.username}" />
<property name="password" value="${src.jdbc.password}" />
<property name="maxActive" value="3" />
<property name="maxWait" value="20000" />
</bean>

<bean id="srcTxManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="srcDataSource"/>
</bean>

<!-- 以AspectJ方式 定義 AOP -->
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(* com.*..*.service.*Manager.*(..))" advice-ref="srcTxAdvice" />
</aop:config>
<!-- 基本事務定義,使用transactionManager作事務管理,默認get* find*方法的事務為readonly,其余方法按默認設置.
默認的設置請參考Spring文檔事務一章. -->
<tx:advice id="srcTxAdvice" transaction-manager="srcTxManager">
<tx:attributes>
<tx:method name="find*" read-only="true" />
<tx:method name="get*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="*" read-only="false" />
</tx:attributes>
</tx:advice>

<tx:annotation-driven transaction-manager="srcTxManager" proxy-target-class="true"/>

<!-- 時間轉換格式 sping注冊 -->
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date">
<bean class="com.wonders.qlyg.engine.util.DatePropertyEditor">
<property name="format">
<value>yyyy-MM-dd hh:mm</value>
</property>
</bean>
</entry>
</map>
</property>
</bean>
</beans>
啟動類

public class YangzhongRun
{
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext("config/spring/*.xml");//掃描spring
Run run = (Run)context.getBean("run");//獲取id為‘run’的bean
for (Scheduler scheduler : run.getTaskMap().values())
scheduler.scheduleTask();
}
}

這就是數數據庫交接的項目的spring的配置,至於具體的項目中用到SQL數據在具體的交換xml 中記錄

我們為什么需要寫這樣的一個Java項目呢?有時候你可能會覺得沒有必要,當你操作幾十張表和幾十萬條數據的時候,就會明白這種提取數據的高效性,這個效果作用與存儲過程有點類似。


將文件打成jar包,然后安裝java虛擬機運行

//這個里面編輯的命令可以是你允許Java虛擬機在cmd里面的編輯命令
d: //進入d盤
cd javaxuniji //進入javaxuniji文件夾
java -jar sjkjj.jar //執行jar文件

 

最后補充一點批處理文件的知識,我們可以將運行java的命令寫成一個批處理文件(cmd或者bat結尾的),以后你就可以雙擊那個文件執行,這就有點類似於一個桌面軟件的雙擊運行了。

新建文本文檔-》修改后綴.bat--》然后在里面編輯以上的命令

//這個里面編輯的命令可以是你允許Java虛擬機在cmd里面的編輯命令d:    //進入d盤cd   javaxuniji //進入javaxuniji文件夾java -jar sjkjj.jar //執行jar文件



下面是博主遇到的錯誤寫的提示方式:

for (Map paramMap : srcList) {
try {
this.qlygManager.generate(paramMap, dr);
} catch (Exception e) {
log.error(">>>>", e);//打印出錯誤日志
log.error(e.getMessage());
}
}
//打印出插入日志
log.info(">>>>>>>>>>>>>"+dataReference.getInsertSql());
log.info("@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + paramMap.get("BUSINESSID"));//打印插入的數據主鍵ID







注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com