翠湖月色
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
放水老倌
搜索
积分与排名
积分 - 200151
排名 - 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
阅读(450)
评论(0)
编辑
收藏
所属分类:
JavaEE
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
Struts2 select标签值从数据库读取,再提交给action
jbpm3插件的中文乱码问题
FckEditor编辑器添加对话框的内容
动态载入jsp页面到指定页面的区域
在线编辑器FCKeditor2.6中文乱码-解决过程
Struts的标签使用(1)
中文汉字GB2312和UTF-8的编码转换程序(转)
转载:js技巧收集(200多个) 3
转载:js技巧收集(200多个) 2
转载:js技巧收集(200多个) 1