翠湖月色
No Buddha tree at all,And bright mirror nor.Now nothing at all,How dusts any more ?
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆 - 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)
報表設計與開發(fā)(12)
數(shù)據(jù)庫(Sql server,My sql)(3)
數(shù)據(jù)結(jié)構(gòu)與算法設計(9)
有關(guān)網(wǎng)絡(5)
雜錄(29)
經(jīng)典視聽(12)
網(wǎng)站應用(6)
腳本語言及頁面設計(8)
軟件測試技術(shù)(8)
閱讀筆記(9)
收藏夾
開源項目(2)
編程開發(fā)(3)
網(wǎng)絡應用(2)
My Favorite Web Sites
CSDN Java 頻道
IBM developerWorks中國
Java開源大全
J道:Java解決之道
SpringFramwork中文論壇
中國萬維網(wǎng)聯(lián)盟論壇
中文Java學習網(wǎng)站-孫衛(wèi)琴版主
中文Java技術(shù)主力站點-JR論壇
綠色軟件下載-霏凡軟件站
蝙蝠英語學習網(wǎng)
名Bloger
Martin Fowler's blog
No1
算法研究、C/C++
月光博客
非著名Bloger
willing的Blog
德賢Blog
放水老倌
搜索
積分與排名
積分 - 202723
排名 - 284
最新評論
1.?re: Jasperreport連續(xù)打印多個報表模板-原創(chuàng)
您好博主,多個jasper報表文件合并輸出pdf文件了,請問頁碼和總頁數(shù)怎么設置?謝謝!
--飛燕
2.?re: FckEditor上傳音頻視頻[未登錄]
樓主可以將此代碼共享出來呀 既然這么多人要!
--hello
3.?re: FckEditor上傳音頻視頻
能不能發(fā)一份fck支持上傳,播放視頻的給我,我急用!
--張德強
4.?re: Struts2 select標簽值從數(shù)據(jù)庫讀取,再提交給action
公司打個
--飛灑地方
5.?re: Jasperreport連續(xù)打印多個報表模板-原創(chuàng)
多謝,解決了我的問題
--黃曉潔
學習筆記-Springs聲明性JDBC事務管理
近日在看臺灣人林信良的《Spring技術(shù)手冊》,這本書總體上簡單易懂,適合初學者。但是在聲明性JDBC事務管理這節(jié)中的例子程序?qū)懙牟粔蛟敿殹O聛砜纯床⒙约有薷牧讼隆?br />首先,在MySQL中建立一個表myuser。注意要讓MySQL支持事務,要選擇InnoDB類型的表。
Create table myuser(
?id int (11) not null auto_increment primary key,
name varchar(100) not null default '',
age int
)type=InnoDB;
這里有個實體類user.java:
package
?onlyfun.caterpillar;
public
?
class
?User?
{
????
private
?Integer?id;
????
private
?String?name;
????
private
?Integer?age;
????
public
?Integer?getId()?
{
????????
return
?id;
????}
????
public
?
void
?setId(Integer?id)?
{
????????
this
.id?
=
?id;
????}
????
public
?String?getName()?
{
????????
return
?name;
????}
????
public
?
void
?setName(String?name)?
{
????????
this
.name?
=
?name;
????}
????
????
public
?Integer?getAge()?
{
????????
return
?age;
????}
????
public
?
void
?setAge(Integer?age)?
{
????????
this
.age?
=
?age;
????}
}
為了面向接口編程,我們實現(xiàn)一個接口,讓DAO類實現(xiàn)這個接口。
package
?onlyfun.caterpillar;
public
?
interface
?IUserDAO?
{
????
public
?
void
?insert(User?user);
????
public
?User?find(Integer?id);
}
具體的DAO類如下:在這個類中我們模擬事務處理。
package
?onlyfun.caterpillar;
import
?java.util.Iterator;
import
?java.util.List;
import
?java.util.Map;
import
?javax.sql.DataSource;
import
?org.springframework.jdbc.core.JdbcTemplate;
public
?
class
?UserDAO?
implements
?IUserDAO?
{
????
private
?JdbcTemplate?jdbcTemplate;
????
????
public
?
void
?setDataSource(DataSource?dataSource)?
{
????????jdbcTemplate?
=
?
new
?JdbcTemplate(dataSource);
????}
????
????
public
?
void
?insert(User?user)?
{
//
在這個方法中我們執(zhí)行了數(shù)據(jù)插入和數(shù)據(jù)查詢兩個操作,用來模擬事務操作。我們故意在查詢的語句中把數(shù)據(jù)庫表寫成smyuser。
???????????????????????????????????
//
這樣,在insert方法執(zhí)行過程中,會由于查詢語句出錯而撤銷之前的插入語句的效果。
???????String?name?
=
?user.getName();
???????
int
?age?
=
?user.getAge().intValue();
???????
???????jdbcTemplate.update(
"
INSERT?INTO?myuser?(name,age)?
"
?
???????????????
+
?
"
VALUES('
"
?
+
?name?
+
?
"
',
"
?
+
?age?
+
?
"
)
"
);
???????
???????
???????List?rows?
=
?jdbcTemplate.queryForList(
?????????
"
SELECT?*?FROM?smyuser?WHERE?id=4
"
);
???????
???????Iterator?it?
=
?rows.iterator();
???????
if
(it.hasNext())?
{
???????????Map?userMap?
=
?(Map)?it.next();
???????????Integer?i?
=
?
new
?Integer(userMap.get(
"
id
"
).toString());
???????????String?names?
=
?userMap.get(
"
name
"
).toString();
???????????Integer?ages?
=
?
new
?Integer(userMap.get(
"
age
"
).toString());
???????????User?users?
=
?
new
?User();
???????????
???????????users.setId(i);
???????????users.setName(name);
???????????users.setAge(age);
???????????System.out.println(
"
names:?
"
?
+
?users.getName());
??????????
???????}
?????
??
????}
????
public
?User?find(Integer?id)?
{
????????
????????
?????????
????????List?rows?
=
?jdbcTemplate.queryForList(
??????????
"
SELECT?*?FROM?myuser?WHERE?id=
"
?
+
?id.intValue());
????????
????????Iterator?it?
=
?rows.iterator();
????????
if
(it.hasNext())?
{
????????????Map?userMap?
=
?(Map)?it.next();
????????????Integer?i?
=
?
new
?Integer(userMap.get(
"
id
"
).toString());
????????????String?name?
=
?userMap.get(
"
name
"
).toString();
????????????Integer?age?
=
?
new
?Integer(userMap.get(
"
age
"
).toString());
????????????User?user?
=
?
new
?User();
????????????
????????????user.setId(i);
????????????user.setName(name);
????????????user.setAge(age);
????????????
????????????
return
?user;
????????}
????????
return
?
null
;
????}
}
然后,在具體測試類中我們這樣:
package
?onlyfun.caterpillar;
import
?org.springframework.context.ApplicationContext;
import
?org.springframework.context.
??????????????support.FileSystemXmlApplicationContext;
public
?
class
?SpringDAODemo?
{
????
public
?
static
?
void
?main(String[]?args)?
{
????????ApplicationContext?context?
=
?
????????????
new
?FileSystemXmlApplicationContext(
????????????????????
"
beans-config.xml
"
);
????????
????????User?user?
=
?
new
?User();
????????
????????user.setName(
"
1matthew
"
);
????????user.setAge(
new
?Integer(
30
));
????????
????????IUserDAO?userDAO?
=
?
????????????(IUserDAO)?context.getBean(
"
userDAOProxy
"
);
????????
????????userDAO.insert(user);
????????
????????user?
=
?userDAO.find(
new
?Integer(
16
));
????????
????????System.out.println(
"
name:?
"
?
+
?user.getName());
????}
}
最后,我們來看配置文件:在這個文件中我們注入事務管理。
<?
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
="dataSource"
?class
="org.apache.commons.dbcp.BasicDataSource"
?destroy-method
="close"
>
????????
<
property?
name
="driverClassName"
>
????????????
<
value
>
com.mysql.jdbc.Driver
</
value
>
????????
</
property
>
????????
<
property?
name
="url"
>
????????????
<
value
>
jdbc:mysql://localhost:3306/test
</
value
>
????????
</
property
>
????????
<
property?
name
="username"
>
????????????
<
value
>
root
</
value
>
????????
</
property
>
????????
<
property?
name
="password"
>
????????????
<
value
>
131421
</
value
>
????????
</
property
>
????
</
bean
>
????
<
bean?
id
="transactionManager"
?class
="org.springframework.jdbc.datasource.DataSourceTransactionManager"
>
????????
<
property?
name
="dataSource"
>
????????????
<
ref?
bean
="dataSource"
?
/>
????????
</
property
>
????
</
bean
>
????
<
bean?
id
="userDAO"
?class
="onlyfun.caterpillar.UserDAO"
>
????????
<
property?
name
="dataSource"
>
????????????
<
ref?
bean
="dataSource"
?
/>
????????
</
property
>
????
</
bean
>
????
<
bean?
id
="userDAOProxy"
?class
="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
>
????????
<
property?
name
="proxyInterfaces"
>
????????????
<
list
>
????????????????
<
value
>
onlyfun.caterpillar.IUserDAO
</
value
>
????????????
</
list
>
????????
</
property
>
????????
<
property?
name
="target"
>
????????????
<
ref?
bean
="userDAO"
?
/>
????????
</
property
>
????????
<
property?
name
="transactionManager"
>
????????????
<
ref?
bean
="transactionManager"
?
/>
????????
</
property
>
????????
<
property?
name
="transactionAttributes"
>
????????????
<
props
>
????????????????
<
prop?
key
="insert*"
>
PROPAGATION_REQUIRED
</
prop
>
????????????
</
props
>
????????????
????????
</
property
>
????
</
bean
>
</
beans
>
datasource這個bean中我們配置了數(shù)據(jù)源的相關(guān)屬性。在userDAOProxy這個bean中,我們配置了target、transactionManager、transactionAttributes屬性。在transactionAttributes中,我們指定所有insert*方法中操作會注入事務管理。
程序的運行結(jié)果是,由于在insert方法中的查詢語句出錯,會引起之前的insert語句效果被撤銷。你也可以把查詢語句先設置正確,看看效果。
posted on 2006-12-30 11:17
matthew
閱讀(958)
評論(0)
編輯
收藏
所屬分類:
閱讀筆記
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
A Gentle Transition from XML to RDF—部分翻譯
reading paper系列2
reading paper系列1
學習筆記-Springs聲明性JDBC事務管理
Void類型的指針-C語言
《Core Java》中的一個例子程序-日歷
《C Primer Plus》-在結(jié)構(gòu)中使用字符數(shù)組還是字符指針?
《C Primer Plus》-指向結(jié)構(gòu)的指針
《Understanding SOA With Web Services》-編制與編排規(guī)范
Copyright ©2025 matthew Powered by:
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
91亚洲视频在线观看
|
歪歪漫画在线观看官网免费阅读
|
香蕉国产在线观看免费
|
午夜肉伦伦影院久久精品免费看国产一区二区三区
|
99re免费99re在线视频手机版
|
99视频免费在线观看
|
亚洲毛片在线免费观看
|
亚洲成色WWW久久网站
|
久久久久免费看黄a级试看
|
免费国产高清视频
|
久久精品亚洲中文字幕无码网站
|
两个人看的www免费视频中文
|
国产亚洲婷婷香蕉久久精品
|
青青草原精品国产亚洲av
|
亚洲欧美熟妇综合久久久久
|
日韩在线天堂免费观看
|
特级无码毛片免费视频
|
久久精品国产亚洲AV嫖农村妇女
|
九九精品免费视频
|
国产激情免费视频在线观看
|
免费大黄网站在线观
|
一区二区免费电影
|
国产AV无码专区亚洲精品
|
日本免费人成在线网站
|
亚洲国产成人久久精品大牛影视
|
最近中文字幕完整免费视频ww
|
一本色道久久综合亚洲精品
|
猫咪免费人成网站在线观看入口
|
特级精品毛片免费观看
|
亚洲综合色婷婷在线观看
|
亚洲第一网站男人都懂
|
国产精品免费观看调教网
|
亚洲av成人一区二区三区
|
免费国产成人18在线观看
|
亚洲人成电影院在线观看
|
国产a级特黄的片子视频免费
|
在线观看片免费人成视频无码
|
亚洲国产成人精品久久
|
亚洲午夜福利精品久久
|
国产片AV片永久免费观看
|
一级白嫩美女毛片免费
|