翠湖月色
No Buddha tree at all,And bright mirror nor.Now nothing at all,How dusts any more ?
首頁
新隨筆
聯系
聚合
管理
隨筆 - 251 文章 - 504 trackbacks - 0
<
2006年12月
>
日
一
二
三
四
五
六
26
27
28
29
30
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
31
1
2
3
4
5
6
本博客系個人收集材料及學習記錄之用,各類“大俠”勿擾!
留言簿
(14)
給我留言
查看公開留言
查看私人留言
隨筆分類
JavaEE(36)
Linux與Unix(6)
Web Services and SOA(16)
WordPress或PHP(1)
人文歷史(17)
名詞解釋(2)
品讀英語(18)
基礎編程篇(9)
所感所悟(25)
報表設計與開發(12)
數據庫(Sql server,My sql)(3)
數據結構與算法設計(9)
有關網絡(5)
雜錄(29)
經典視聽(12)
網站應用(6)
腳本語言及頁面設計(8)
軟件測試技術(8)
閱讀筆記(9)
收藏夾
開源項目(2)
編程開發(3)
網絡應用(2)
My Favorite Web Sites
CSDN Java 頻道
IBM developerWorks中國
Java開源大全
J道:Java解決之道
SpringFramwork中文論壇
中國萬維網聯盟論壇
中文Java學習網站-孫衛琴版主
中文Java技術主力站點-JR論壇
綠色軟件下載-霏凡軟件站
蝙蝠英語學習網
名Bloger
Martin Fowler's blog
No1
算法研究、C/C++
月光博客
非著名Bloger
willing的Blog
德賢Blog
放水老倌
搜索
積分與排名
積分 - 202396
排名 - 285
最新評論
1.?re: Jasperreport連續打印多個報表模板-原創
您好博主,多個jasper報表文件合并輸出pdf文件了,請問頁碼和總頁數怎么設置?謝謝!
--飛燕
2.?re: FckEditor上傳音頻視頻[未登錄]
樓主可以將此代碼共享出來呀 既然這么多人要!
--hello
3.?re: FckEditor上傳音頻視頻
能不能發一份fck支持上傳,播放視頻的給我,我急用!
--張德強
4.?re: Struts2 select標簽值從數據庫讀取,再提交給action
公司打個
--飛灑地方
5.?re: Jasperreport連續打印多個報表模板-原創
多謝,解決了我的問題
--黃曉潔
Spring IoC容器-編碼方式比較
下面會通過一個獲得數據源的例子來比較下傳統編碼模式和IoC編碼模式的不同。首先,在傳統編碼方式下,我們可能這樣獲得數據源并顯示結果:
package
?com.lnic.ioc;
import
?javax.sql.DataSource;
import
?java.sql.Connection;
import
?java.sql.Statement;
import
?java.sql.ResultSet;
import
?java.sql.SQLException;
import
?org.apache.commons.dbcp.BasicDataSource;
public
?
class
?BasicDataSourceExample?
{
????
public
?
static
?
void
?main(String[]?args)?
{
????????DataSource?dataSource?
=
?setupDataSource();
????????
//
?創建JDBC數據源
????????Connection?conn?
=
?
null
;
????????Statement?stmt?
=
?
null
;
????????ResultSet?rset?
=
?
null
;
????????
try
?
{
????????????
????????????conn?
=
?dataSource.getConnection();
????????????stmt?
=
?conn.createStatement();
????????????rset?
=
?stmt.executeQuery(
"
select?*?from?user
"
);
????????????System.out.println(
"
Basic?DataSource?executing?results:
"
);
????????????
int
?numcols?
=
?rset.getMetaData().getColumnCount();
????????????
while
?(rset.next())?
{
????????????????
for
?(
int
?i?
=
?
1
;?i?
<=
?numcols;?i
++
)?
{
????????????????????System.out.print(
"
\t
"
?
+
?rset.getString(i));
????????????????}
????????????????System.out.println(
""
);
????????????}
????????}
?
catch
?(SQLException?e)?
{
????????????e.printStackTrace();
????????}
?
finally
?
{
????????????
try
?
{
????????????????rset.close();
????????????}
?
catch
?(Exception?e)?
{
????????????}
????????????
try
?
{
????????????????stmt.close();
????????????}
?
catch
?(Exception?e)?
{
????????????}
????????????
try
?
{
????????????????conn.close();
????????????}
?
catch
?(Exception?e)?
{
????????????}
????????}
????}
????
//
?創建數據源
????
public
?
static
?DataSource?setupDataSource()?
{
????????BasicDataSource?ds?
=
?
new
?BasicDataSource();
????????ds.setDriverClassName(
"
com.mysql.jdbc.Driver
"
);
????????ds.setUsername(
"
root
"
);
????????ds.setPassword(
"
131421
"
);
????????ds.setUrl(
"
jdbc:mysql://localhost:3306/test
"
);
????????
return
?ds;
????}
????
//
?提示數據源狀態
????
public
?
static
?
void
?printDataSourceStats(DataSource?ds)?
throws
?SQLException?
{
????????BasicDataSource?bds?
=
?(BasicDataSource)?ds;
????????System.out.println(
"
NumActive:?
"
?
+
?bds.getNumActive());
????????System.out.println(
"
NumIdle:?
"
?
+
?bds.getNumIdle());
????}
????
//
?關閉數據源
????
public
?
static
?
void
?shutdownDataSource(DataSource?ds)?
throws
?SQLException?
{
????????BasicDataSource?bds?
=
?(BasicDataSource)?ds;
????????bds.close();
????}
}
這個累的測試結果顯示:
Basic DataSource executing results:
?123?matthew?YunNanUniversity
?1?lidexian?YunNanUniversity
?2?zhangzili?HunanUniversity
而在Spring 的IoC容器的幫助下我們的編碼會更簡單和靈活。首先,定義個Spring的配置文件:applicationContext.xml。在這個配置文件中,我們配置了三個bean組件,代表不同的數據庫數據源。然后,通過配置jdbcTemplate來啟用需要的具體數據庫數據源。如下:我們采用的MySql數據源。
<?
xml?version="1.0"?encoding="UTF-8"
?>
<!
DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd"
>
<
beans
>
????
<
bean?
id
="oracle_dataSource"
?class
="org.apache.commons.dbcp.BasicDataSource"
?destroy-method
="close"
>
????????
<
property?
name
="driverClassName"
?value
="oracle.jdbc.driver.OracleDriver"
?
/>
????????
<
property?
name
="url"
?value
="jdbc:oracle:thin:@localhost:1521:cyberdb"
?
/>
????????
<
property?
name
="username"
?value
="scott"
?
/>
????????
<
property?
name
="password"
?value
="tiger"
?
/>
????
</
bean
>
????
????
????
????
<
bean?
id
="mysql_dataSource"
?class
="org.apache.commons.dbcp.BasicDataSource"
?destroy-method
="close"
>
????????
<
property?
name
="driverClassName"
?value
="com.mysql.jdbc.Driver"
?
/>
????????
<
property?
name
="url"
?value
="jdbc:mysql://localhost:3306/test"
?
/>
????????
<
property?
name
="username"
?value
="root"
?
/>
????????
<
property?
name
="password"
?value
="131421"
?
/>
????
</
bean
>
????
????
<
bean?
id
="linux_oracle_dataSource"
?class
="org.apache.commons.dbcp.BasicDataSource"
?destroy-method
="close"
>
????????
<
property?
name
="driverClassName"
?value
="oracle.jdbc.driver.OracleDriver"
?
/>
????????
<
property?
name
="url"
?value
="jdbc:oracle:thin:@192.168.0.3:1521:linuxdb"
?
/>
????????
<
property?
name
="username"
?value
="scott"
?
/>
????????
<
property?
name
="password"
?value
="tiger"
?
/>
????
</
bean
>
????
<
bean?
id
="jdbcTemplate"
?class
="org.springframework.jdbc.core.JdbcTemplate"
?lazy-init
="true"
>
????????
<
property?
name
="dataSource"
>
????????????
<
ref?
local
="mysql_dataSource"
?
/>
????????
</
property
>
????
</
bean
>
????
</
beans
>
然后,如下在代碼中通過載入Spring的配置文件,并初始化bean組件:jdbcTemplate得到數據源,并完成數據查詢。可以看出比傳統的方法簡單和靈活多了,只需要簡單配置即可完成。
package
?com.lnic.ioc;
import
?java.sql.ResultSet;
import
?java.sql.SQLException;
import
?java.util.ArrayList;
import
?java.util.List;
import
?org.springframework.context.ApplicationContext;
import
?org.springframework.context.support.ClassPathXmlApplicationContext;
import
?org.springframework.jdbc.core.JdbcTemplate;
import
?org.springframework.jdbc.core.RowCallbackHandler;
public
?
class
?IocDataSourceExample?
{
????
public
?
static
?
void
?main(String[]?args)?
{
????????ApplicationContext?ctx?
=
?
new
?ClassPathXmlApplicationContext(
????????????????
"
com/lnic/ioc/applicationContext.xml
"
);
//
載入spring配置文件applicationContext.xml
????????String?sql?
=
?
"
select?*?from?user
"
;
????????JdbcTemplate?jt?
=
?(JdbcTemplate)?ctx.getBean(
"
jdbcTemplate
"
);
//
這里采用spring的JdbcTemplate,通過spring的配置文件啟用mysql_dataSource數據源。
????????jt.query(sql,?
new
?RowCallbackHandler()?
{
????????????
public
?
void
?processRow(ResultSet?rs)?
throws
?SQLException?
{
????????????????
//
?do?something?with?the?rowdata?-?like?create?a?new
????????????????
//
?object?and?add?it?to?the?List?in?the?enclosing?code
????????????????System.out.println(
"
IocDataSource?executing?results:
"
);
????????????????
int
?numcols?
=
?rs.getMetaData().getColumnCount();
????????????????
????????????????
do
?
{
????????????????????
for
?(
int
?i?
=
?
1
;?i?
<=
?numcols;?i
++
)?
{
????????????????????????System.out.print(
"
\t
"
?
+
?rs.getString(i));
????????????????????}
????????????????????System.out.println(
""
);
????????????????}
?
while
?(rs.next());
????????????}
????????}
);
????}
}
代碼輸出如下:
IocDataSource executing results:
?123?matthew?YunNanUniversity
?1?lidexian?YunNanUniversity
?2?zhangzili?HunanUniversity
posted on 2006-12-26 13:25
matthew
閱讀(457)
評論(0)
編輯
收藏
所屬分類:
JavaEE
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
Struts2 select標簽值從數據庫讀取,再提交給action
jbpm3插件的中文亂碼問題
FckEditor編輯器添加對話框的內容
動態載入jsp頁面到指定頁面的區域
在線編輯器FCKeditor2.6中文亂碼-解決過程
Struts的標簽使用(1)
中文漢字GB2312和UTF-8的編碼轉換程序(轉)
轉載:js技巧收集(200多個) 3
轉載:js技巧收集(200多個) 2
轉載:js技巧收集(200多個) 1
Copyright ©2025 matthew Powered by:
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
国产99久久久国产精免费
|
亚洲av日韩专区在线观看
|
亚洲男人电影天堂
|
色在线亚洲视频www
|
在线91精品亚洲网站精品成人
|
深夜a级毛片免费无码
|
国产在线观看免费视频软件
|
最近免费中文字幕高清大全
|
成人au免费视频影院
|
亚洲电影日韩精品
|
久久亚洲国产精品成人AV秋霞
|
97久久国产亚洲精品超碰热
|
免费无遮挡无遮羞在线看
|
日本视频免费高清一本18
|
99久久99久久精品免费看蜜桃
|
国产精品无码一二区免费
|
中文字幕不卡亚洲
|
亚洲精品国产第1页
|
国产亚洲男人的天堂在线观看
|
你好老叔电影观看免费
|
国产在线a免费观看
|
亚洲人成影院在线观看
|
亚洲最新中文字幕
|
国产精品自拍亚洲
|
久久久久久影院久久久久免费精品国产小说
|
久久精品亚洲一区二区
|
亚洲色偷精品一区二区三区
|
一区二区三区视频免费观看
|
国产成人精品免费午夜app
|
免费人成在线观看网站视频
|
亚洲尹人九九大色香蕉网站
|
妇女自拍偷自拍亚洲精品
|
亚洲免费视频网站
|
国产一级淫片a免费播放口之
|
久久久久久亚洲精品
|
精品亚洲国产成人av
|
84pao国产成视频免费播放
|
免费a级毛片无码av
|
亚洲成a人片在线观看播放
|
久久国产精品免费一区
|
成年人免费观看视频网站
|