Java——Web开发之开源框架DBUtils的使用,JSP开发模式,三层架构与MVC设计模式的认识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zoweiccc/article/details/84555635

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

猜你喜欢

转载自blog.csdn.net/zoweiccc/article/details/84555635