小型Java Web项目之DAO操作标准、DAO接口真实实现类、DAO代理实现类、DAO工厂

DAO模式的好处是数据访问和业务逻辑分离,便于数据维护,业务逻辑不需要了解访问细节。
DAO的组成:
1.DatabaseConnection:负责打开和关闭数据库;
2.VO:包含属性以及其getter和setter方法;
3.DAO:定义操作的接口,使之更标准;
4.Impl:DAO接口的真实实现类,完成具体的数据库操作,但不负责数据库的打开和关闭;
5.Proxy:代理实现类,完成数据库的打开和关闭,调用真实实现类对象的操作;
6.Factory:通过Factory获得DAO的一个实例化对象。

DAO操作标准:

package dao;

import vo.User;

public interface IUserDAO {
    public boolean findLogin(User user);//登陆时查找用户
    public boolean findRegister(String name);//注册时查找用户名
    public boolean doCreate(User user);//注册新用户
}

DAO真实实现类:

package dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import dao.IUserDAO;
import vo.User;

public class UserDAOImpl implements IUserDAO {
    private Connection conn = null;
    private PreparedStatement ps = null;
    public UserDAOImpl(Connection conn){
        this.conn = conn;
    }
    @Override
    public boolean findLogin(User user) {
        // TODO Auto-generated method stub
        boolean flag = false;
        String sql="SELECT uname FROM user WHERE uname=? AND upassw=?";
        try {
            this.ps = this.conn.prepareStatement(sql);
            this.ps.setString(1, user.getUname());
            this.ps.setString(2, user.getUpassw());
            ResultSet rs = this.ps.executeQuery();
            if(rs.next()){
                flag = true;
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(this.ps != null){
                try {
                    this.ps.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return flag;
    }
    @Override
    public boolean findRegister(String name) {
        // TODO Auto-generated method stub
        boolean flag = false;
        String sql="SELECT uname FROM user WHERE uname=?";
        try {
            this.ps = this.conn.prepareStatement(sql);
            this.ps.setString(1, name);
            ResultSet rs = this.ps.executeQuery();
            if(rs.next()){
                flag = true;
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(this.ps != null){
                try {
                    this.ps.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return flag;
    }
    @Override
    public boolean doCreate(User user) {
        // TODO Auto-generated method stub
        boolean flag = false;
        String sql = "INSERT INTO user (uname,upassw,email,mibao) VALUES (?,?,?,?)";
        try {
            this.ps = this.conn.prepareStatement(sql);
            this.ps.setString(1, user.getUname());
            this.ps.setString(2, user.getUpassw());
            this.ps.setString(3, user.getEmail());
            this.ps.setString(4, user.getMibao());
            if(this.ps.executeUpdate() > 0){
                flag = true;
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(this.ps != null){
                try {
                    this.ps.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return flag;
    }
}

DAO代理实现类:

package dao.proxy;

import java.sql.SQLException;

import dao.IUserDAO;
import dao.impl.UserDAOImpl;
import dbc.DatabaseConnection;
import vo.User;

public class UserDAOProxy implements IUserDAO {
    private DatabaseConnection dbc = null;
    private IUserDAO dao = null;
    public UserDAOProxy(){
        try {
            this.dbc = new DatabaseConnection();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        this.dao = new UserDAOImpl(this.dbc.getConn());
    }
    @Override
    public boolean findLogin(User user) {
        // TODO Auto-generated method stub
        boolean flag = false;
        try{
            flag = this.dao.findLogin(user);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            this.dbc.close();
        }
        return flag;
    }
    @Override
    public boolean findRegister(String name) {
        // TODO Auto-generated method stub
        boolean flag = false;
        try{
            flag = this.dao.findRegister(name);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            this.dbc.close();
        }
        return flag;
    }
    @Override
    public boolean doCreate(User user) {
        // TODO Auto-generated method stub
        boolean flag = false;
        try{
            flag = this.dao.doCreate(user);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            this.dbc.close();
        }
        return flag;
    }
}

DAO工厂类:

package factory;

import dao.IUserDAO;
import dao.proxy.UserDAOProxy;

public class DAOFactory {
    public static IUserDAO getIUserDAOInstance(){
        return new UserDAOProxy();
    }
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值