Java——Web開發之開源框架DBUtils的使用,JSP開發模式,三層架構與MVC設計模式的認識

DBUtils的使用:

在使用開源框架DBUtils時,它只是幫我們簡化了CRUD的代碼,但是它不負責連接的創建以及獲取工作。

1.和使用開源框架都一樣的一個步驟,先導入jar文件

2.在這裏採用的是開源數據庫連接池C3P0進行連接

3.編寫CRUD代碼

使用其功能實現的操作:

QueryRunner QR=new QueryRunner(CPDS);

  • 增加操作:QR.update("insert into account values(null,?,?)","wew",1000);
  • 刪除操作:QR.update("delete from account where id=?",3);
  • 修改操作:QR.update("update account set money=? where id=?", 10000,5);
  • 查詢操作(一):直接創建ResultSetHandler接口的匿名實現類方式
    • 去執行查詢,查詢到的數據還是在result裏面,然後調用handle方法,由用戶手動封裝
  • 查詢操作(二):直接使用框架已經寫好的實現類ResultSetHandler的方式
    • 查詢出來的是一個對象,用BeanHandler
    • 查詢出來的是很多對象則用BeanListHandler

 

常用的實現類
BeanHandler:查詢到的單個數據封裝成一個對象
BeanListHandler:查詢到的多個數據封裝成一個List<對象>
ArrayHandler:查詢到的單個數據封裝成一個數組
ArrayListHandler:查詢道德多個數據封裝成一個集合,集合裏面的元素是數組
MapHandler:查詢到的單個數據封裝成一個Map
MapListHandler:查詢到的多個數據封裝成一個集合,集合裏面的元素是map
ColumnListHandler:查詢具體某一列
KeyedHandler:查詢具體某一個值
ScalarHandler:查詢一些聚合函數(count總數)
        

 

TestDBUtils.java

package dbutil;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.Test;

import bean.Account;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class TestDBUtils {
	
	@Test
	public void testInsert() throws SQLException{
		
		ComboPooledDataSource CPDS=new ComboPooledDataSource();
		QueryRunner QR=new QueryRunner(CPDS);
		
		/*
		//增加操作
		QR.update("insert into account values(null,?,?)","wew",1000);
		
		//刪除操作
		QR.update("delete from account where id=?",3);
		
		//修改操作
		QR.update("update account set money=? where id=?", 10000,5);
		*/

		//查詢操作(一)直接創建ResultSetHandler接口的匿名實現類方式
		//去執行查詢,查詢到的數據還是在result裏面,然後調用handle方法,由用戶手動封裝
		Account account=QR.query("select *from account where id=?", new ResultSetHandler<Account>(){

			@Override
			public Account handle(ResultSet rs) throws SQLException {
				Account account=new Account();
				while(rs.next()){
					String name=rs.getString("name");
					int money=rs.getInt("money");
					account.setName(name);
					account.setMoney(money);
				}
				return account;
			}
			
		},6);
		System.out.println(account.toString());	//Account [name=abc, money=2345]
		
		//查詢操作(二)直接使用框架已經寫好的實現類ResultSetHandler的方式
		//查詢單個對象
		Account account2=QR.query("select *from account where id=?",
				new BeanHandler<Account>(Account.class) ,6); 
		//Account.class通過類的字節碼得到該類的實例
		System.out.println(account2.toString());
		
		//查詢多個對象
		List<Account> list = QR.query("select *from account", 
				new BeanListHandler<Account>(Account.class));
		for (Account account3 : list) {
			System.out.println(account3.toString());
		}
	}
}

Account.java

package bean;

public class Account {
	private String name;
	private int money;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}
	@Override
	public String toString() {
		return "Account [name=" + name + ", money=" + money + "]";
	}
}

爲了避免一些麻煩,所以給出目錄結構,並標出用到的jar文件,配置文件等等...

 

JSP開發模式,三層架構與MVC設計模式的認識:

  • JSP的開發模式:

         開發模式1:JavaBean+JSP
             在jsp裏直接寫java代碼,維護起來困難,且jsp的頁面代碼會變成臃腫
         開發模式2:JavaBean+JSP+Servlet
             實際上是MVC模式:
             M(Model)模型層:    封裝數據,數據處理JavaBean    java類    EJB
             V(View)視圖層:     JSP  jsp專注於顯示
             C(Controller)控制層:  Servlet,接受頁面的請求,找模型層去處理,然後響應數據出去
             對於大型項目:分層,邏輯比較清楚,便於維護,擴展方便。(適合)
             對於小型項目:嚴格遵守MVC,比較麻煩,代碼會比較多 

  • 三層架構:

         Web層:Servlet/jsp
         業務邏輯層:EJB 會話bean JavaBean
         數據訪問層:DAO

  • MVC設計模式:

         M:對應於三層架構裏的業務邏輯層和數據訪問層;實現數據的封裝和數據的處理
         V:對應於三層架構裏的Web層;實現顯示
         C:對應於三層架構裏的Web層;實現了接受請求,調用模型層處理數據,反饋給View

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章