開發者只要透過一些簡單的配置即可使用 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")); } }
沒有留言:
張貼留言