javaBean+DAO

准备工作:

  编写数据库脚本,准备数据。

  

View Code
 1 create table Info(
2 id bigint not null auto_increment primary key,
3 name varchar(20) not null,
4 age int not null,
5 email varchar(30) not null,
6 job varchar(20) not null,
7 employ DATE not null
8 );
9
10 insert into Info(name,age,email,job,employ) values('张三','20','xxx_00180@qq.com','软件工程师','2001-06-04');
11 insert into Info(name,age,email,job,employ) values('李四','22','45221@qq.com','测试工程师','2010-08-05');
12 insert into Info(name,age,email,job,employ) values('王武','33','3435345@qq.com','售前工程师','2008-12-16');
13 insert into Info(name,age,email,job,employ) values('赵柳','44','7574356@qq.com','售后工程师','2004-07-09');
14 insert into Info(name,age,email,job,employ) values('孙琦','59','3425475@qq.com','项目经理','1991-10-08');
15 insert into Info(id,name,age,email,job,employ) values(6,'赵八','36','74812@qq.com','总经理','1990-12-08');

 

1.先编写VO类Info

package cn.xiong.daostudy.vo;

import java.util.Date;

public class Info
{
	private int id;
	private String name;
	private int age;
	private String email;
	private String job;
	private Date employ;

	public Info()
	{
		super();
	}

	public Info(int id, String name, int age, String email, String job,
			Date employ)
	{
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.email = email;
		this.job = job;
		this.employ = employ;
	}

	public int getId()
	{
		return id;
	}

	public void setId(int id)
	{
		this.id = id;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public int getAge()
	{
		return age;
	}

	public void setAge(int age)
	{
		this.age = age;
	}

	public String getEmail()
	{
		return email;
	}

	public void setEmail(String email)
	{
		this.email = email;
	}

	public String getJob()
	{
		return job;
	}

	public void setJob(String job)
	{
		this.job = job;
	}

	public Date getEmploy()
	{
		return employ;
	}

	public void setEmploy(Date employ)
	{
		this.employ = employ;
	}
	

}

 2,创建数据库操作类DatabaseConnection,主要负责数据库连接及关闭。

package cn.xiong.daostudy.database;
import java.sql.Connection;
import java.sql.DriverManager;
public class DatabaseConnection
{
	private final String DBDRIVER="org.gjt.mm.mysql.Driver";
	private final String DBURL="jdbc:mysql://localhost:3306/study_java";
	private final String DBUSER="root";
	private final String DBPASSWORD="mysqladmin";
	private Connection conn=null;
	
	public DatabaseConnection()
	{
		try
		{
			Class.forName(DBDRIVER);
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
		try
		{
			this.conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
	}
	
	public Connection getConnection()
	{
		return this.conn;
	}
	
	public void close()
	{
		try
		{
			this.conn.close();
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
	}
	
}

 3,定义接口IDao,操作数据库

package cn.xiong.daostudy.dao;
import cn.xiong.daostudy.vo.Info;
import java.util.List;
public interface IDao
{
	public boolean doInsert(Info info) throws Exception;
	public Info findById(int id) throws Exception;
	public List<Info> findAll() throws Exception; 
}

 4,编写IDao接口的实现类DaoImpl

package cn.xiong.daostudy.impl;
import cn.xiong.daostudy.dao.IDao;
import cn.xiong.daostudy.vo.Info;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;
import java.util.ArrayList;

public class DaoImpl implements IDao
{
	  private Connection conn=null;
	  private PreparedStatement psmt=null;
	  public DaoImpl(Connection conn)
	  {
	  	this.conn=conn;
	  }
		public boolean doInsert(Info info) throws Exception
		{
			boolean flag=false;
			String sql="insert into Info(name,age,email,job,employ) values(?,?,?,?,?);";
			this.psmt=this.conn.prepareStatement(sql);
			this.psmt.setString(1,info.getName());
			this.psmt.setInt(2,info.getAge());
			this.psmt.setString(3,info.getEmail());
			this.psmt.setString(4,info.getJob());
			this.psmt.setDate(5,new java.sql.Date(info.getEmploy().getTime()));			
			int n=this.psmt.executeUpdate();
			this.psmt.close();
			if(n>0)
			{
				flag=true;
			}
			return flag;													
		}
		public Info findById(int id) throws Exception
		{
			String sql="select id,name,age,email,job,employ from Info where id=? ;";
			ResultSet rst=null;
			this.psmt=this.conn.prepareStatement(sql);
			rst=this.psmt.executeQuery();
			Info info=new Info();
			if(rst.next())
			{
				info.setId(rst.getInt(1));
				info.setName(rst.getString(2));
				info.setAge(rst.getInt(3));
				info.setEmail(rst.getString(4));
				info.setJob(rst.getString(5));
				info.setEmploy(new java.util.Date(rst.getDate(6).getTime()));
			}			
			this.psmt.close();
			return info;
		}
		public List<Info> findAll() throws Exception
		{
			List<Info> list=new ArrayList<Info>();			
			String sql="select id,name,age,email,job,employ from Info;";
			ResultSet rst=null;
			this.psmt=this.conn.prepareStatement(sql);
			rst=this.psmt.executeQuery();
			while(rst.next())
			{
				Info info=new Info();
				info.setId(rst.getInt(1));
				info.setName(rst.getString(2));
				info.setAge(rst.getInt(3));
				info.setEmail(rst.getString(4));
				info.setJob(rst.getString(5));
				info.setEmploy(new java.util.Date(rst.getDate(6).getTime()));
				list.add(info);				
			}
			this.psmt.close();
			return list;			
		}
}

 5,编写代理操作类DaoProxy,负责将实现类与数据库操作类整合,调用实现类中数据库的CRUD操作,并处理数据库连接的关闭。

package cn.xiong.daostudy.proxy;
import cn.xiong.daostudy.database.DatabaseConnection;
import cn.xiong.daostudy.vo.Info;
import cn.xiong.daostudy.dao.IDao;
import cn.xiong.daostudy.impl.DaoImpl;
import java.util.List;

public class DaoProxy implements IDao
{
	private DatabaseConnection dc=null;
	private IDao dao=null;
	
	public DaoProxy()
	{
		this.dc=new DatabaseConnection();
		this.dao=new DaoImpl(this.dc.getConnection());
	}
	public boolean doInsert(Info info) throws Exception
	{
		boolean flag=false;
		try
		{
			if(null==this.dao.findById(info.getId()))
			{
				flag=this.dao.doInsert(info);
			}
		}
		catch (Exception e)
		{
			throw e;
		}
		finally
		{
			this.dc.close();
		}
		
		return flag;
	}
	public Info findById(int id) throws Exception
	{
		Info info=null;
		try
		{
			info=this.dao.findById(id);
		}
		catch (Exception e)
		{
			throw e;
		}
		finally
		{
			this.dc.close();
		}
		
		return info;
	}
	public List<Info> findAll() throws Exception
	{
		List<Info> list=null;
		try
		{
			list=this.dao.findAll();
		}
		catch (Exception e)
		{
			throw e;
		}
		finally
		{
			this.dc.close();
		}		
		return list;		
	}
		
}

 6,定义工厂类DaoFactory。工厂类通过DaoProxy实例化IDao对象,供调用者操作数据库。

package cn.xiong.daostudy.daofactory;
import cn.xiong.daostudy.dao.IDao;
import cn.xiong.daostudy.proxy.DaoProxy;
public class DaoFactory
{
	public static IDao getDaoInstance()
	{
		return new DaoProxy();
	}
}

 7,编写前台显示页面DaoBeanDemo_01.jsp,展示数据库查询的结果

View Code
 1 <%@ page contentType="text/html" pageEncoding="GBK"%>
2 <%@ page import="java.util.List"%>
3 <%@ page import="java.util.Iterator"%>
4 <%@ page import="cn.xiong.daostudy.vo.Info"%>
5 <html>
6 <head>
7 <% request.setCharacterEncoding("GBK");%>
8 </head>
9 <jsp:useBean id="info" class="cn.xiong.daostudy.daofactory.DaoFactory" scope="page" />
10 <%
11 List list=info.getDaoInstance().findAll();
12 Iterator it=list.iterator();
13 %>
14 <body>
15 <table border="1" width="80%">
16 <tr>
17 <th>ID</th>
18 <th>姓名</th>
19 <th>年龄</th>
20 <th>E-Mail</th>
21 <th>岗位</th>
22 <th>雇佣日期</th>
23 </tr>
24 <%
25 while(it.hasNext())
26 {
27 Info in=(Info)it.next();
28 %>
29 <tr>
30 <td><%=in.getId()%></td>
31 <td><%=in.getName()%></td>
32 <td><%=in.getAge()%></td>
33 <td><%=in.getEmail()%></td>
34 <td><%=in.getJob()%></td>
35 <td><%=in.getEmploy()%></td>
36 </tr>
37 <%
38 }
39 %>
40 </table>
41 </body>
42 </html>



 

 

转载于:https://www.cnblogs.com/xiongyu/archive/2012/01/17/2324493.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值