DAo设计模式Word下载.docx
《DAo设计模式Word下载.docx》由会员分享,可在线阅读,更多相关《DAo设计模式Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
}
}
publicConnectiongetConnection(){
returnthis.conn;
publicvoidclose(){
this.conn.close();
}
5.VO类:
是一个包含属性和表中字段完全对应的类,并在该类中含有getter/setter方法。
packageDB;
publicclassUser{
//用户id
privateintuserid;
//用户名
privateStringusername;
//用户密码
privateStringpassword;
//获得用户id
publicintgetUserid(){
returnuserid;
//设置用户id
publicvoidsetUserid(intuserid){
this.userid=userid;
//获得用户名
publicStringgetUsername(){
returnusername;
//设置用户名
publicvoidsetUsername(Stringusername){
this.username=username;
//获得密码
publicStringgetPassword(){
returnpassword;
//设置密码
publicvoidsetPassword(Stringpassword){
this.password=password;
6.DAO接口:
定义所有用户的操作:
如添加记录,删除记录,及查询记录。
因为是接口,所以仅仅是定义,需要子类实现
importjava.util.*;
//定义数据库操作方法
publicinterfaceUserDAO{
//增加操作
publicvoidinsert(Useruser)throwsException;
//修改操作
publicvoidupdate(Useruser)throwsException;
//删除操作
publicvoiddelete(intuserid)throwsException;
//按ID查询操作
publicUserqueryById(intuserid)throwsException;
//查询全部
publicListqueryAll()throwsException;
//模糊查询
publicListqueryByLike(Stringkeyword)throwsException;
7.DAO实现类
DAO实现类实现了DAO接口,并实现了DAO接口定义的所有方法:
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.util.ArrayList;
importjava.util.List;
importusebean.Person;
//引入usebean下得Person类
publicclassUserDAOImplimplementsUserDAO{
//删除操作
publicvoiddelete(intuserid)throwsException{
Stringsql="
deletefromuserwhereuserid=?
"
PreparedStatementpstmt=null;
DataBaseConnectiondbc=null;
//下面是针对数据库的操作
try{
//连接数据库
dbc=newDataBaseConnection();
pstmt=dbc.getConnection().prepareStatement(sql);
pstmt.setInt(1,userid);
//进行数据库更新操作
pstmt.executeUpdate();
pstmt.close();
}catch(Exceptione){
thrownewException("
操作出现异常"
);
}finally{
//关闭数据库连接
dbc.close();
}
//添加操作
publicvoidinsert(Useruser)throwsException{
Stringsql="
insertintouser(username,password)values(?
?
)"
PreparedStatementpstmt=null;
DataBaseConnectiondbc=null;
//下面是针对数据库的具体操作
try{
//连接数据库
dbc=newDataBaseConnection();
pstmt=dbc.getConnection().prepareStatement(sql);
//pstmt.setInt(1,user.getUserid());
pstmt.setString(1,user.getUsername());
pstmt.setString(2,user.getPassword());
pstmt.executeUpdate();
pstmt.close();
}catch(Exceptione){
thrownewException("
}finally{
//关闭数据库连接
dbc.close();
publicListqueryAll()throwsException{
List<
User>
all=newArrayList<
();
select*fromuser"
//下面是针对数据库的操作
//进行数据库查询
ResultSetrs=pstmt.executeQuery();
while(rs.next()){
//查询出内容,之后将查询出得内容赋值给user对象
Useruser=newUser();
user.setUserid(rs.getInt
(1));
user.setUsername(rs.getString
(2));
user.setPassword(rs.getString(3));
//将查询出来的数据加入到list对象之中
all.add(user);
}
rs.close();
returnall;
//按id查询
publicUserqueryById(intuserid)throwsException{
Useruser=null;
select*fromuserwhereuserid=?
//针对数据库的具体操作
pstmt.setInt(1,userid);
//进行数据库查询操作
if(rs.next()){
//查询出内容,之后将查询的内容赋值给user对象
user=newUser();
returnuser;
//修改操作
publicvoidupdate(Useruser)throwsException{
updateusersetusername=?
password=?
whereuserid=?
pstmt.setString(1,user.getUsername());
pstmt.setInt(3,user.getUserid());
//进行数据库更新
}catch(Exceptione){
//关闭数据库
publicListqueryByLike(Stringkeyword)throwsException{
List<
//定义集合,接收全部数据
select*fromuserwhereusernamelike?
//进行数据库查询
pstmt.setString(1,"
%"
+keyword+"
ResultSetrs=pstmt.executeQuery();
while(rs.next()){
//查询出内容,之后将查询出得内容赋值给user对象
Useruser=newUser();
user.setUserid(rs.getInt
(1));
user.setUsername(rs.getString
(2));
user.setPassword(rs.getString(3));
//将查询出来的数据加入到list对象之中
all.add(user);
rs.close();
returnall;
8.DAO工厂类:
通过该DAO工厂类的一个静态方法获得DAO实现类实例
publicclassDAOFactory{
publicstaticUserDAOgetUserDAOInstance(){
returnnewUserDAOImpl();
9.添加记录:
<
title>
添加用户记录<
/title>
body>
<
formaction="
QueryAll.jsp"
method="
post"
>
tablealign="
center"
tr>
td>
用户名:
/td>
inputtype="
text"
name="
username"
/tr>
密码:
password"
reset"
value="
重置"
submit"
添加"
/table>
/form>
10.查询所有记录:
%@pagelanguage="
java"
import="
java.util.*"
pageEncoding="
gb2312"
%>
%@pageimport="
DB.*"
%>
查询所有用户记录<
%request.setCharacterEncoding("
%
Stringusername=request.getParameter("
Stringpassword=request.getParameter("
//通过DAO工厂获得DAO实现类实例
//UserDAOuserDAO=DAOFactory.getUserDAOInstance();
UserDAOuserDAO=newUserDAOImpl();
//设置需要添加的用户
Useruser=newUser();
//user.setUserid(19);
user.setUsername(username);
user.setPassword(password);
try{
userDAO.insert(user);
}catch(Exceptione)
{
%
//通过DAO工厂获得DAO实现类实例
UserDAOuserDAo=DAOFactory.getUserDAOInstance();
//设置新用户
all=userDAo.queryAll();
Iterator<
iter=all.iterator();
tableborder="
1"
bgcolor="
#c0c0c0"
align="
用户序列号<
用户名<
密码<
while(iter.hasNext()){
Useruser1=iter.next();
%=user1.getUserid()%>
%=user1.getUsername()%>
%=user1.getPassword()%>
效果图:
11.更新操作:
更新用户记录<
/head>
Useruser=newUser();
user.setUserid(4);
user.setUsername("
king"
user.setPassword("
666666"
//执行更新操作
userDAo.update(user);
12.删除操作
删除用户记录<
//执行删除操作
userDAo.delete(25);
13.模糊查询:
模糊查询所有用户记录<
Stringusername=request.getParameter("
all=userDAo.queryByLike(username);
formmethod="
action="
likeSelect.jsp"
请输入要查询的用户名:
length="
10"
模糊查询"
width="
80%"
center>
Useruser=iter.next();
%=user.getUserid()%>
%=user.getUsername()%>
%=user.getPassword()%>
界面图:
14.按ID查询
查询用户记录<
Useruser=userDAo.queryById(12);
out.println("
+user.getUsername());
+user.getPassword());
15.注意:
如果往数据库里添加不进去汉字,需要首先检测一下数据库的编码。