開發者只要透過一些簡單的配置即可使用 DBCP,以下以一個範例來介紹如何使用
下面的範例我是以 Java Web 的專案測試,並非一般的 Java Application
所以 如果到最後程式沒錯但是出現一堆 bug 的問題,我之後再撰文一一說明
如果是以 Java Web 為專案的,請先檢查該專案下是否已經存在了
Spring-2.5.6、commons-dbcp-1.4、commons-pool-1.5.5 否則會跑不起來唷!!
首先在 Spring 框架中有一部份即是整合了 DAO、ORM.....等
其中以下以一個 Good (商品) 和 GoodDao 為例,來看看Spring 如何整合 DAO 和連接池
GoodDao.java
package org.database;
import java.util.List;
import java.util.Map;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
public class GoodDao extends JdbcDaoSupport //自定義的 DAO 必須繼承 JdbcDaoSupport
{
public List getAll(){
List list = (List)getJdbcTemplate().queryForList("SELECT * FROM goods");
return list;
}
//another method....
}
以上的 DAO 必須繼承 org.springframework.jdbc.core.support.JdbcDaoSupport
下面為 Good 的 javabean
Good.java
package org.pojo;
import java.util.Date;
public class Good
{
private int id;
private String viewpic;
private String name;
private int price;
private int storenum;
private Date uptime;
private String maaker;
private String info;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getViewpic() {
return viewpic;
}
public void setViewpic(String viewpic) {
this.viewpic = viewpic;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getStorenum() {
return storenum;
}
public void setStorenum(int storenum) {
this.storenum = storenum;
}
public Date getUptime() {
return uptime;
}
public void setUptime(Date uptime) {
this.uptime = uptime;
}
public String getMaaker() {
return maaker;
}
public void setMaaker(String maaker) {
this.maaker = maaker;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
以上完成後就來看看Spring 中最重要的配置檔案了 applicationContext.xml
建議將該檔案放置在 ClassPath 目錄下喔
<?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"/>
<property name="url" value="jdbc:mysql://localhost:3306/shopcar"/>
<property name="username" value="root"/>
<property name="password" value="1111"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="GoodDao" class="org.database.GoodDao">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
</beans>
所以以上的配置檔中的最後一個 bean 的配置中
就將 JdbcTemplate 注入到 GoodDao 的 jdbcTemplate 屬性中,
而此屬性就是繼承JdbcDaoSupport而來的
最後可以寫個 測試程式來測試一下
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
GoodDao goodDao = (shopCarDao)context.getBean("GoodDao");
List<Map> list = goodDao.findAll();
for(int i=0;i<list.size();i++){
Map good = (Map)list.get(i);
System.out.println(good.get("name"));
}
}
沒有留言:
張貼留言