翠湖月色
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
放水老倌
搜索
積分與排名
積分 - 202423
排名 - 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免费放
|
久久久久久免费一区二区三区
|
免费高清A级毛片在线播放
|
自拍日韩亚洲一区在线
|
久久久久亚洲AV无码麻豆
|
亚洲一级特黄大片无码毛片
|
国产精品成人四虎免费视频
|
免费看国产精品3a黄的视频
|
久久久精品2019免费观看
|
baoyu777永久免费视频
|
无码国产精品一区二区免费模式
|
羞羞视频在线观看免费
|
偷自拍亚洲视频在线观看
|
亚洲欧美黑人猛交群
|
亚洲熟女乱色一区二区三区
|
24小时免费直播在线观看
|
久久精品国产免费观看三人同眠
|
日韩免费电影网站
|
9久热精品免费观看视频
|
eeuss草民免费
|
一区二区三区在线免费
|
男女交性无遮挡免费视频
|
在线观看免费亚洲
|
亚洲AV噜噜一区二区三区
|
亚洲AV成人精品日韩一区
|
欧美日韩亚洲精品
|
美女被免费网站在线视频免费
|
成年在线观看免费人视频草莓
|
国产精品成人观看视频免费
|
国内精自视频品线六区免费
|
免费看h片的网站
|
西西大胆无码视频免费
|
最新中文字幕免费视频
|
日韩精品免费一区二区三区
|
四虎AV永久在线精品免费观看
|
亚洲片国产一区一级在线观看
|
中文字幕无线码免费人妻
|