
log4j.rootCategory= ,WriterAppender



































//hh是一個class,test方法里只有幾個logger.info("aaa"),用于測試用,這東西可以去掉

























可以這么用:
List list = getHibernateTemplate().find("select new map(t1.c1,t2.c3) from table1 t1 ,table2 t2 where t1.c1=t2.c2");
這樣的話list里的每個元素都是一個map,每個map里包含兩個元素
注意:這里的table1和table2都是class名并不是真的表名,畢竟這是hql。除了可以用map還還支持list和自定義的bean。
DB2的Type-4驅(qū)動真的很詭異,配了兩天沒配上,發(fā)現(xiàn)是多引了一個包。就是他----“db2java.zip(db2java.jar)”只要有了他就算你已經(jīng)引入了db2jcc.jar、db2jcc_license_cisuz.jar、db2jcc_license_cu.jar也沒用。
不知道怎么回事,本以為多引就沒錯,沒想到載這了。
順便吧db2 type-4的配置方法貼下面:
jdbc:db2://ip:port/數(shù)據(jù)庫
驅(qū)動名:com.ibm.db2.jcc.DB2Driver
我日他IBM!該死的IBM,我算是服了,配好的type-4驅(qū)動中文數(shù)據(jù)顯示的全是亂碼,準(zhǔn)備切到type-2上試試,結(jié)構(gòu)還是不行,查來查去是數(shù)據(jù)庫pagecode的事,數(shù)據(jù)庫的字符集改成gbk,客戶端的pagecode也改成跟數(shù)據(jù)庫一樣的,ODBC算是能用了,type-2也能用了,然后又用type-4一試!連不上了!說字符集不匹配,上網(wǎng)一查說要使用IBM專用的JDK,我日了,換了IBM的JDK,配好環(huán)境變量eclipse又不能用了!我算是被IBM搞死了,一氣之下也不準(zhǔn)備再嘗試type-4了。
我這里用的IBM JDK1.4,db2 V8
近日抽風(fēng),想了解以下java與串口并口通訊的問題,上網(wǎng)查了半天,找到了sun幾年前的一個破包,comm.jar
2.0版的,遇到一個比較奇怪的問題,這個包里的demo程序用cmd可以運行,但是用eclipse編譯就不能運行,一直以為是dll庫和配置文件的問題,幾乎將兩個文件copy到了系統(tǒng)中全部可能出現(xiàn)的地方都沒有解決。百般無奈之下,找到了http://blog.csdn.net/djsl6071/archive/2007/04/25/1583979.aspx這個博客,下載了rxtx把問題搞定了。 如果RMI客戶端鏈接補上服務(wù)器可能是以下情況導(dǎo)致的:1、網(wǎng)絡(luò)不通
2、端口占用
3、防火墻(客戶端機器的防火墻和服務(wù)器端的防火墻都有可能)
4、服務(wù)器端所在機器安裝了linux虛擬機,或者使用的linux或者unix系統(tǒng)
排除辦法:
前三種情況都很好解決,主要是最后一個,需要在rmi服務(wù)啟動時加上一句
java -Djava.rmi.server.hostname=localhost ……
其中l(wèi)ocalhost可以強制定義為機器的IP地址
為了滿足將plugin工程打成jar包,但是spring的配置文件不打進jar包的需求。很多時候我們?yōu)榱丝梢苑奖闶止づ渲胹pring的一些信息,而不用將jar解壓而從新壓縮,我們需要把Spring的配置文件放在plugin的jar包外這時,如果沒有正確的使用spring的Resource就不能加載spring的配置文件,經(jīng)過多次嘗試終于找到一個比較合適的方法,與大家交流。








將appcontextclient.xml文件放到工程根目錄下,發(fā)布時將appcontextclient.xml放入到你的eclipse的安裝目錄即可(與eclipse的exe執(zhí)行文件相同的位置),如果需要可在appcontextclient.xml文件前加入相關(guān)的路徑來更改你的目錄(但是有可能在調(diào)試過程中必須要把appcontextclient.xml文件放到你的eclipse IDE的安裝目錄里,因為大部分時間我們的eclipse IDE是何 workspace分開存放的,這樣我們在調(diào)試的時候非常別扭,要到IDE里去修改配置文件)。
以上方法并不是唯一的,只是我感覺用起來比較合適的,這樣在調(diào)試時既可以保證appcontextclient.xml文件在工程目錄范圍內(nèi),有可以在發(fā)布時使文件保持在安裝目錄而不是運行環(huán)境的workspace的臨時目錄里。
同時介紹幾個方法可以eclipse方法獲得eclipse工具的幾個重要路徑(注:"IDE"為我的plugin工程的PLUGIN_ID)
Platform.getInstallLocation().getURL()
file:/F:/tools/java/eclipse/eclipse-SDK-3.3-win32/eclipse/
這是我的eclipse IDE的安裝目錄
Platform.getLocation()
D:/runtime-IDE.product
這是我調(diào)試插件時生成的臨時運行環(huán)境目錄,是在調(diào)試IDE工程時生成的,就是發(fā)布時插件所屬eclipse運行環(huán)境的WorkSpace目錄
Platform.getInstanceLocation().getURL()
file:/D:/runtime-IDE.product/
這個跟上面的一樣
Platform.getLocation()
D:/runtime-IDE.product
這個跟上面的也一樣
Platform.getLogFileLocation()
D:/runtime-IDE.product/.metadata/.log
運行環(huán)境的日志文件路徑,發(fā)布時插件所屬eclipse運行環(huán)境的WorkSpace目錄下的/.metadata/.log
Platform.getStateLocation(Platform.getBundle("IDE"))
D:/runtime-IDE.product/.metadata/.plugins/IDE
運行環(huán)境中IDE的一個臨時目錄,發(fā)布時插件所屬eclipse運行環(huán)境的WorkSpace目錄下/.metadata/.plugins/IDE
Platform.getUserLocation()
file:/C:/Documents and Settings/XX/user
這是我的文檔的路徑(把用戶名X掉,哈哈)
Platform.getBundle("IDE").getLocation()
update@D:/WorkSpace/IDE/
我的IDE工程的路徑,對應(yīng)發(fā)布時插件的jar本身,在這個目錄下的文件將全部包含在發(fā)不得jar里。
Platform.getConfigurationLocation().getURL()
file:/D:/WorkSpace/.metadata/.plugins/org.eclipse.pde.core/IDE.product/
eclipse IDE 自己建的目錄
eclipse 本身也有很多加載資源文件的方法可以在org.eclipse.core.runtime.Platform這個類里找到,具體的就請大家找找API吧 應(yīng)要求在此提供ibatis批量插入demo下載,謝謝大家的關(guān)注,不過對于一些人的不禮貌行為我非常痛心。由于工作地點不能上網(wǎng),不能上網(wǎng),不能及時回復(fù)大家的留言我深表道歉。下載 此問題網(wǎng)上大部分解決方法是這樣的:
1.網(wǎng)上鄰居->本地連接->屬性->internet協(xié)議(TCP/IP)->屬性->高級->wins標(biāo)簽->去掉啟用LMhosts查詢前的勾.
2.控制面版->windows防火墻->高級標(biāo)簽->本地連接設(shè)置->服務(wù)的標(biāo)簽里勾選安全Web服務(wù)器(HTTPS)即可
但是我的機器按照上面操作apache服務(wù)仍然不可以使用,于是索性將服務(wù)中的Windows Firewall/Internet Connection Sharing (ICS的服務(wù)關(guān)掉了,發(fā)現(xiàn)問題解決了,apache可以用了。對于安全問題可以選擇第3方的防火墻來解決。
注意:費爾防火墻好像和apache沖突,也會導(dǎo)致WSASocket failed to open the inherited socket 今天用sun的jdk調(diào)的沒有一點問題的數(shù)據(jù)抽取程序,方放到AIX上后不能用了,oralce報出向一個字段中插入了過長的數(shù)據(jù),可是程序在幾天前還是沒有問題的,后來分析可能是字符集導(dǎo)致的,因為前幾天修改過informix數(shù)據(jù)庫的字符集由8859-1轉(zhuǎn)為了zh_cn.gb18030-2000,但解決過程異常艱難,后來吧informix的url改為<value>jdbc:informix-sqli://xx.xx.xx.xx:8888/XXXX:informixserver=whcspdev;DB_LOCALE=zh_cn.gb18030-2000;CLIENT_LOCALE=zh_cn.UTF8(原為zh_cn.gb18030-2000);NEWCODESET=gb18030,gb18030-2000,5488,utf8</value>就可以了。后來猜測了一下原因:
1、oracle數(shù)據(jù)庫的jdbc驅(qū)動是是自動將數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)為unicode格式,這可能跟java的String默認為unicode有關(guān),為了讓大家方便操作,
2、sun jdk的String在初始時用的是Unicode格式,ibm的jdk應(yīng)該也是,但是有一點,sun的jdk在通過informix jdbc驅(qū)動取數(shù)據(jù)時不會將數(shù)據(jù)轉(zhuǎn)成其他字符集,而是仍然使用Unicode,而IBM的則是通過CLIENT_LOCALE=zh_cn.gb18030-2000配置將數(shù)據(jù)格式轉(zhuǎn)為了zh_cn.gb18030-2000。
所以在oracle作insert的時候就會由于字符集不匹配而報錯
前兩天遇到為org.eclipse.jface.text.TextViewer添加undo、redo 并添加Ctrl+z,與Ctrl+y功能這個問題,搜遍了國內(nèi)網(wǎng)站,也沒有個好結(jié)果,終于多天后在一個國外的svn服務(wù)器上找到了一段代碼,解決了問題
1、為TextViewer添加TextViewerUndoManager來管理記錄











2、添加Ctrl+z,與Ctrl+y事件












































建議:如果對數(shù)據(jù)的準(zhǔn)確性毋庸置疑的話就是用batch處理。如果不能確定準(zhǔn)確性的話,如果對那條數(shù)據(jù)出錯無所謂的話就也可以用batch,但是非要返回出錯行號的話就不要用batch了,直接在外面套用一個事務(wù),然后try catch一下,處理一下行號。 今天發(fā)生了ORA-01461 :can bind a LONG value only for insert into a LONG ...到處查詢發(fā)現(xiàn)是一個字段中的中文內(nèi)容導(dǎo)致,仔細分析了一下原因,是因為jdk1.5的String類型為utf-16編碼方式,而jdk1.4為utf-8,通過在oracle網(wǎng)上查詢10g的jdbc驅(qū)動有兩個版本,舊版的不持jdk1.5,只支持jdk1.4,通過換jdbc驅(qū)動問題解決。 1、上回的心得中我強調(diào)了startBatch()的批處理的作用,但是其中的使用是個錯誤用法,并沒有發(fā)揮出startBatch()的實力,對此給與觀眾的誤導(dǎo)我將在此表示到欠,并貼出正確的用法



































2、注意ibatis的事物默認情況下是自動提交的,如果發(fā)現(xiàn)速度上有問題可以留意一下,ibatis只有在顯示的聲明事物管理的情況下才自動將事物管理改為不自動方式。
3、還是startBatch(),據(jù)我測試分析這個鬼東西只有在executeBatch(),才把所有的語句提交到數(shù)據(jù)庫,在提交之前緩存中保留了大量的sql語句和數(shù)據(jù)對象,很有可能out of memony,對此要留意,可以在大量數(shù)據(jù)要做插入時,分批用Batch,如:有40000條數(shù)據(jù)可將其分為4個Batch塊,讓后將這4個Batch用一個事物提交以保證數(shù)據(jù)完整性。
注:最近在做數(shù)據(jù)抽取項目,愿與大家溝通心得
程序功能:
使用ibatis+spring將oracle數(shù)據(jù)庫中的tfile表中的數(shù)據(jù)抽取到db2數(shù)據(jù)庫的tfile表,這兩個表的結(jié)構(gòu)相同。
測試環(huán)境:
celeron M 1.4/512M/mysql 5.0數(shù)據(jù)庫
代碼:






































2、使用 test2FileDao.getSqlMapClient().startBatch();
test2FileDao.getSqlMapClient().executeBatch();
可以發(fā)起jdbc對批量數(shù)據(jù)插入的優(yōu)化與自動代碼壓縮功能。
結(jié)語:這次使用ibatis在同樣的硬件、數(shù)據(jù)庫、數(shù)據(jù)條數(shù)的環(huán)境下測試,在不起用batch,所有數(shù)據(jù)庫,數(shù)據(jù)池特性均使用默認設(shè)置情況下使用19秒,并且使用一次性將數(shù)據(jù)讀入內(nèi)存的方式,效果優(yōu)于hibernate,所以真信優(yōu)化后的程序應(yīng)該比hibernate效率更高。但是從程序編寫方面來講,hibernate省去了過多的代碼,可以讓程序員更輕松些。
程序功能:
使用hibernate+spring將oracle數(shù)據(jù)庫中的tfile表中的數(shù)據(jù)抽取到db2數(shù)據(jù)庫的tfile表,這兩個表的結(jié)構(gòu)相同。(原本要使用一些Spring的特性,但是程序改來改去發(fā)現(xiàn)Spring特性一個都沒用上,實際上完全可以由hibernate創(chuàng)建兩個sessionFactory完成)
測試環(huán)境:
celeron M 1.4/512M/mysql 5.0數(shù)據(jù)庫
代碼:





































配置文件:


1、為保證不會出現(xiàn)內(nèi)存溢出
hibernate.jdbc.batch_size 設(shè)為 20-50
并在代碼中沒隔50個insert后手工清理數(shù)據(jù)








2、為保證減少二級緩存導(dǎo)致的過多的內(nèi)存開銷關(guān),閉二級緩存
hibernate.cache.use_second_level_cache 設(shè)為false
3、保證使用長事務(wù),不要在每個插入都事務(wù)提交,這樣性能可以有很大幅度的提升(由于原先配的事務(wù)沒有正常運行,在初次測試時此程序插入4萬條數(shù)據(jù)用了12分鐘,使用了長事務(wù)后僅為34秒)
4、使用ScrollableResults(提供了數(shù)據(jù)庫的游標(biāo)特性)然后插入的效果好像要優(yōu)于分批抓取分批插入的效果,(4萬條數(shù)據(jù),用ScrollableResult耗時29秒)但網(wǎng)上有人聲稱批量抓取插入的效果要好可能在遠程數(shù)據(jù)庫的情況下批量抓取的可靠性更高一點的原因。這一點我詢問過公司里做數(shù)據(jù)庫比較好的人,批量處理數(shù)據(jù)是要使用游標(biāo)處理的。就游標(biāo)而言分為動態(tài)游標(biāo),靜態(tài)游標(biāo),動態(tài)游標(biāo)慢于靜態(tài)游標(biāo),靜態(tài)游標(biāo)慢于靜態(tài)查詢,但是如果用分批抓取數(shù)據(jù)的話就涉及到數(shù)據(jù)分段截取,為保證每次分段截取時數(shù)據(jù)的正確性,應(yīng)該要預(yù)先對數(shù)據(jù)處理,所以批量抽取數(shù)據(jù)的速度可能會慢一些。以下為使用ScrollableResult的程序






















WorkbenchWindowAdvisor 類中的preWindowOpen()方法加入
configurer.setShowStatusLine(true);//顯示狀態(tài)欄
ApplicationActionBarAdvisor類中增加
protected void fillStatusLine(IStatusLineManager statusLine) {
super.fillStatusLine(statusLine);
StatusLineContributionItem statusItem = new StatusLineContributionItem("DAStatus",50);
statusItem.setText("狀態(tài)欄:測試");
statusLine.add(statusItem);
}
將在狀態(tài)欄中顯示:“狀態(tài)欄:測試”
2、定義動態(tài)的StatusLine文本
WorkbenchWindowAdvisor 類中的preWindowOpen()方法加入
configurer.setShowStatusLine(true);
在要調(diào)用狀態(tài)欄的class里加入下面方法
private void showStatusMessage(String msg) {
WorkbenchWindow workbenchWindow = (WorkbenchWindow)PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IStatusLineManager lineManager = workbenchWindow.getStatusLineManager();
StatusLineContributionItem statusItem = new StatusLineContributionItem("DAStatus",50);
statusItem.setText(msg);
lineManager.add(statusItem);
}
使用listener來調(diào)用showStatusMessage(String msg)即可。


















<c3p0-config> <property name="automaticTestTable">con_test</property> |
很多人都認為比DBCP優(yōu)秀。
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>${jdbc.driverClassName}</value>
</property>
<property name="jdbcUrl">
<value>${jdbc.url}</value>
</property>
<property name="user">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<property name="initialPoolSize"><value>10</value></property>
<property name="minPoolSize"><value>5</value></property>
<property name="maxPoolSize"><value>30</value></property>
<property name="acquireIncrement"><value>5</value></property>
<property name="maxIdleTime"><value>10</value></property>
<property name="maxStatements"><value>0</value></property>
</bean>
以下幾個參數(shù)是使用的基本配置參數(shù):
initialPoolSize:
Number of Connections a pool will try to acquire upon startup. Should be between minPoolSize and maxPoolSize
連接池初始化時獲取的鏈接數(shù),介于minPoolSize和maxPoolSize之間
minPoolSize:
Minimum number of Connections a pool will maintain at any given time.
最小鏈接數(shù)
maxPoolSize:
Maximum number of Connections a pool will maintain at any given time.
最大連接數(shù)
acquireIncrement:
Determines how many connections at a time c3p0 will try to acquire when the pool is exhausted.
在當(dāng)前連接數(shù)耗盡的時候,一次獲取的新的連接數(shù)
maxIdleTime:
Seconds a Connection can remain pooled but unused before being discarded. Zero means idle connections never expire.
最大空閑的時間,單位是秒,無用的鏈接再過時后會被回收
??String fullPath = file.getAbsolutePath();
1、編制菜單:?
?????每個Plug-In可以包括一個MenuBar(菜單)、CoolBar(工具欄)、PerspectiveBar(面板欄)、FastViewBar(快速視圖欄),這些欄目是在Plug-In運行過程中不會改變的,MenuBar(菜單)由ApplicationActionBarAdvisor類的fillMenuBar()方法定義,例:

????????????fileMenu.add(new?Separator());

CoolBar(工具欄)由ApplicationActionBarAdvisor類的fillCoolBar()方法定義,例:

toolbar.add(newViewAction);
PerspectiveBar由PlugIn.xml文件中關(guān)于Perspective的配置自動生成,F(xiàn)astViweBar由PlugIn.xml文件中關(guān)于View的配置自動生成,MenuBar和CoolBar中各個功能按鈕的action在ApplicationActionBarAdvisor類的makeActions()方法中注冊。例:


2、編寫面板和視圖:?
??????在Plug-In運行過程中Perspective(面板),View(視圖)會被經(jīng)常切換,其中Perspective由若干個View組成,Perspective要實現(xiàn)IPerspectiveFactory接口,并在Perspective中定義要加載的View。View要繼承ViewPart類,View還要有一個唯一的ID。并把Perspective和View在PlugIn.xml作注冊。例:
















3、添加action
編寫一個繼承了Action的XXXaction類,再此之前先定義一個接口,如下:







實現(xiàn)XXXaction的構(gòu)造函數(shù),如下:








在PlugIn.xml中添加相應(yīng)的配置:








4、顯示工具欄:
在ApplicationWorkbenchWindowAdvisor類的preWindowOpen();方法中添加
?



1、tomcat:
???<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
????????<property name="jndiName"><value>java:comp/env/jdbc/引用名</value></property>
????</bean>
2、OC4J:
????<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
????????<property name="jndiName"><value>jdbc/引用名</value></property>
????</bean>
1、select 語句在oracle中執(zhí)行時,只是做了一次查詢分析,只有當(dāng)從select 中拿數(shù)據(jù)時才將數(shù)據(jù)寫入緩存。
2、每次select語句的執(zhí)行并意味它都要從數(shù)據(jù)庫中抓取數(shù)據(jù),只有當(dāng)?shù)谝淮尾樵儠r才一定從數(shù)據(jù)庫中抓數(shù)據(jù),這就是說你拿到的數(shù)據(jù)是來自緩存的。
3、clob、blob形是有自己單獨的緩存的。 建立CVSNT服務(wù)器
1、下載并安裝CVSNT。
2、建立兩個文件夾,分別用來存放項目文件和臨時文件在Repositories中配置用于存放項目文件的文件夾,在Advanced中配置臨時文件夾
3、配置權(quán)限,在Advanced中啟用系統(tǒng)權(quán)限認證的選項,并在windows的系統(tǒng)用戶中添加若干個組為User的用戶
4、在文件夾屬性中的安全欄目中,為剛建立的兩個文件加分配User組的權(quán)限為全部讀寫權(quán)限(有可能看不到此欄目,可在文件夾選項中將“查看”-〉“簡單文件共享”的選項去掉)。
此時CVSNT配置完畢,啟動服務(wù)。
使用TortoiseCVS.exe訪問服務(wù)
1、建立模塊:選擇要建立的模塊的文件夾,右鍵使用make new module,選中pserver,填入IP,PORT為2401(默認值),repository folder添入服務(wù)器上的用于存放項目的文件夾的name(注意前面的\)輸入用戶名,按ok即可,如果建立成功所選文件夾上將會顯示綠色的鉤。
2、將模塊中的內(nèi)容加入到版本控制中:當(dāng)模塊建立完畢時,模塊中的文件并沒有加入到版本控制中,需要按右鍵用CVS add contents將全部文件加入到版本控制中方可。 將字符串轉(zhuǎn)換為數(shù)字:
Number(value)
將數(shù)字轉(zhuǎn)為字符串:
toString()
Window類:
頁面跳轉(zhuǎn):window.location = "URL地址"
打開一個新窗口頁面:window.open( "URL地址")
將值付到打開此頁面的頁面中Id為com的控件中 opener.document.getElementById("com").value=值
History類:
回退:back() 與瀏覽器中的“后退“功能相同
前進:forward ()與瀏覽器中的“前進“功能相同
跳轉(zhuǎn)到某個歷史紀(jì)錄:go()
事例:history.go('home.netscape.com')或history.go(-3) ??????? 針對Blob數(shù)據(jù)類型,hibernate可以按功能映射為blob、serializable、binary?三種類型,serializable可以用于直接序列化對象,binary需要自己使用流進行類型轉(zhuǎn)換,blob可以使用Hibernate的blobImpl,如果是與Spring框架結(jié)合的話還可以使用org.springframework.orm.hibernate3.support.BlobByteArrayType。如果使用Binary或serializable保存比較大的內(nèi)容可以將 hibernate.jdbc.use_streams_for_binary 設(shè)為 true,以確保自動開啟流功能。(注:使用的Oracle驅(qū)動可能會導(dǎo)致插入時報“數(shù)據(jù)大小超出此類型的最大值”
的錯誤,請選用正確的驅(qū)動,我使用的是使oracle 10g的數(shù)據(jù)庫和驅(qū)動) 當(dāng)要存儲的對象過大時,由于Oralce回滾段問題有可能會報“無法從套接字讀取更多的數(shù)據(jù)”之類的錯誤,解決辦法:
1、將Object字段的blob類型改為Long raw類型,配置文件仍為blob即可
2、將回滾值放大(網(wǎng)上所屬,并無驗證)。
??????今天打入http:\\Localhaost:8080\admin\嗯…………
??????靈異事件發(fā)生了,打開的不是我的Tomcat5.0的頁面阿,怎么是tomcat4.0的配置頁面!
??????我前天剛做過的系統(tǒng),沒裝Tomcat4.0啊這是怎么回事,暈悶了,昨天用的還好好的,鬧鬼了?在刷一遍頁面!還是不對,我靠,刷了無數(shù)遍,難道我是做夢?招來同事看,也不知道怎么回事,把Tomcat5停了,還能登上去。真是驚了……
??????打開配置頁面好好研究了一番,有一個工程的目錄不對,我的機器上沒有這個目錄,突發(fā)奇想,問了問是哪位同事的機器上有這個目錄,果真有一個同事說他的機器上有,并且他開著Tomcat4.0。
??????真是暈死了,我把我的Tomcat5.0從新打開改成http:\\192.168.0.250:8080\登陸這回好了,問題解決了。
郁悶之時發(fā)現(xiàn)那臺機器就是我們的代理服務(wù)器。沒想到代理服務(wù)器還有著問題!!
1、數(shù)據(jù)實體Bean
public class Temp?implements Serializable
{
??? private java.lang.Long???? id;
??? private Blob??????????????????? object; //用于存放對象的Blob
??? private java.lang.Long???? userId;
??? private java.util.Date?????? appendDate;
}
2、hbm影射
<hibernate-mapping package="temp">
<class name="Temp" table="TEMP">
??????? <id name="id" column="ID" type="long">
??????????? <generator class="sequence">
??????????? ?<param name="sequence">TEMP_SEQ</param>
??????????? </generator>
??????? </id>
???????? <property name="object" column="OBJECT" type="blob" />
??????? <property name="userId" column="USER_ID" type="long" />
??????? <property name="appendDate" column="APPEND_DATE" type="date" />
??? </class>?
</hibernate-mapping>
3、save方法
public void saveTemp( ) throws IOException, ClassNotFoundException, SQLException
?{
???????Temp temp = new Temp();
????????temp.setUserId(new Long(1));
????????temp.setAppendDate(new Date());
????????ByteArrayOutputStream outputstr = new ByteArrayOutputStream();
????????ObjectOutputStream objOutStr = new ObjectOutputStream( outputstr );
????????objOutStr.writeObject( contract );????????????????????????? //contract為要保存的對象;
????????BlobImpl blob = new BlobImpl(outputstr.toByteArray());
????????temp.setObject( blob );
????????saveTemp(temp);?????????????????????????????????????????????????????//將Temp持久化到數(shù)據(jù)庫;
?}
4、get方法
public void etTempList() throws IOException, ClassNotFoundException, SQLException
?{
????????List Templist = getTempList( userId);
????????if( contractTemplist.size() != 0 )
????????{
????????????????Temp temp = ( Temp )Templist.get(0);
???????????????ObjectInputStream instr = new ObjectInputStream(temp.getObject().getBinaryStream());
????????????????Contract contract = ( Contract )instr.readObject();
???????????}
?}
如何控制你做的網(wǎng)頁打印出來在一張紙上。
下面是我的解決方案:
要求:IE5。5以上。
將頁面頁面邊距設(shè)置的“上下左右”都設(shè)為5;也可以設(shè)為0;
并將頁面設(shè)為“縱向”。
然后再要打印的網(wǎng)頁插入以下模板中(當(dāng)然可以巧妙的嵌在ASP生成的網(wǎng)頁上。):
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!--CSS樣式表插入到這里-------------------->
?
<!--------------------------------------->
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table border="0" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF" width="740" height="1058">
? <tr>
??? <td>
????? <div id="content" style="position:absolute; z-index:1; left: 15; top: 15; background-color: #FFFFFF; layer-background-color: #FFFFFF; border: 1px none #000000">
<!--中間插入要縮印的內(nèi)容------------------------->
<!-------------------------------------------------->
?? </div>
??? </td>
? </tr>
</table>?
<script>
//如果是橫向,下面兩個數(shù)值要改過來!變?yōu)椋?br />//page_width=29*36.5
//page_height=20*37
page_width=20*37
page_height=29*36.5
zoom_width=page_width/document.all("content").scrollWidth
zoom_height=page_height/document.all("content").scrollHeight
if(zoom_width>zoom_height){
document.all("content").style.zoom=zoom_height
}
else
{
document.all("content").style.zoom=zoom_width
}
</script>
</body>
</html>
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 31 | 1 | 2 | |||
3 | 4 | 5 | 6 | 7 | 8 | 9 | |||
10 | 11 | 12 | 13 | 14 | 15 | 16 | |||
17 | 18 | 19 | 20 | 21 | 22 | 23 | |||
24 | 25 | 26 | 27 | 28 | 29 | 30 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
常用鏈接
留言簿(2)
隨筆分類
隨筆檔案
- 2008年6月 (1)
- 2008年4月 (3)
- 2008年2月 (1)
- 2008年1月 (1)
- 2007年12月 (1)
- 2007年10月 (1)
- 2007年7月 (2)
- 2007年6月 (2)
- 2007年5月 (1)
- 2007年4月 (6)
- 2007年2月 (1)
- 2007年1月 (4)
- 2006年11月 (1)
- 2006年10月 (1)
- 2006年9月 (5)
framework
j2me
java
linux
web
其他
友情鏈接
- 我的旅游筆記
- 我的旅游筆記
素材
最新評論

- 1.?re: 為org.eclipse.jface.text.TextViewer添加undo、redo 并添加Ctrl+z,與Ctrl+y功能
- 找到原因了,必須加textViewer.setDocument(new Document());才好使
- --yumin_999@163.com
- 2.?re: 為org.eclipse.jface.text.TextViewer添加undo、redo 并添加Ctrl+z,與Ctrl+y功能
- 反復(fù)測試,還是不好使,奇怪。yumin_999@163.com
- --yumin_999@163.com
- 3.?re: ibatis批量代碼
- 這個能事物回滾嗎?我也是這樣子寫的 但是事物沒有回滾 不知道什么怎么回事
- --pes
- 4.?re: Spring+ibatis批量處理心得3
- 評論內(nèi)容較長,點擊標(biāo)題查看
- --孫繼超
- 5.?re: DB2的jdbc type-4驅(qū)動
-
您好 ,我也遇到了像您一樣的問題,我的qq是178147633,能幫幫我嗎?
我也是用type 4連接的db2,版本是8.2。到現(xiàn)在還沒連上 - --wk