1. 程式人生 > >小型Java Web專案之DAO操作標準、DAO介面真實實現類、DAO代理實現類、DAO工廠

小型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();
    }
}

相關推薦

小型Java Web專案DAO操作標準DAO介面真實實現DAO代理實現DAO工廠

DAO模式的好處是資料訪問和業務邏輯分離,便於資料維護,業務邏輯不需要了解訪問細節。 DAO的組成: 1.DatabaseConnection:負責開啟和關閉資料庫; 2.VO:包含屬性以及其getter和setter方法; 3.DAO:定義操作的介面,

小型Java Web專案DatabaseConnection

做JavaWeb專案必然離不開資料庫,這裡使用的是MySQL資料庫進行開發。具體連結類如下: package dbc; import java.sql.Connection; import ja

小型Java Web專案使用者JavaBean

這兩個月複習了一下去年所學的Java Web開發,因此也寫了一個小型的Java Web專案,這個專案雖然比較小,但是還是用了DAO+MVC模式,目的在於好好熟悉一下這兩個模式。 登陸使用者類的JavaBean如下: package vo; public

部署Java Web 專案注意事項

上篇 Docker - 部署Java Web 專案記錄了使用docker如何搭建一個擁有java執行環境的docker映象。 這篇部落格記錄之前構建映象過程中遇到的一些問題。 這裡,在docker容器中,部署專案思路: 1.先git拉取最新程式碼 2.因

需求分析--我的第一個java-web專案路(一)

需求分析 (-:引用的定義:-) 所謂”需求分析“,是指對要解決的問題進行詳細的分析,弄清楚問題的要求,包括需要輸入什麼資料,要得到什麼結果,最後應輸出什麼. 需求分析是一個專案的開始,主要是弄明白這個專案需要做什麼,用來做什麼。簡單來說就

原型設計--我的第一個java-web專案路(二)

原型設計 一`什麼是原型設計? 世界觀: 原型就是一個產品出爐之前樣品的簡單框架,就像建築業製造業的圖紙一樣,起到指導和展示的作用. 這部分工作是由產品經理來規劃. 原型設計就是設計原型的過程

linux環境配置java web專案四——安裝資料庫

安裝MySQL主要有兩種方法:一種是通過原始碼自行編譯安裝,這種適合高階使用者定製MySQL的特性;另一種是通過編譯過的二進位制檔案進行安裝。二進位制檔案安裝的方法又分為兩種:一種是不針對特定平臺的通用安裝方法,使用的二進位制檔案是字尾為.tar.gz的壓縮檔案;第二種是使

關於java web專案的部署操作

如果你為web專案的部署操作感到煩躁,比如,部署的時候每次都需要再次去點選 redeploy按鈕,才行,或者點了沒用反應,要把整個專案都remove再重新部署,你感覺到了很煩躁,很費時間,那麼你可以再新建一個檔案,來使你的web專案自動部署...基本操作是在專案的webRo

Java web面試多種專案釋出方式

我們在本地釋出web專案時,一般有三種方式: run as server tomcat釋出 使用war包釋出 前兩個我們基本都知道,直到昨天我才知道,原來還有第三種釋出方式: 首先,把編寫好的程式碼進行匯出,並放置在Tomcat的webapps目錄下(為確保通過war

阿里雲登陸Java web 專案搭建(mac終端操作

伺服器:CentOS 7.4 1. 終端連線伺服器 購買成功,收到簡訊後,開啟終端, 輸入 ssh [email protected]公網IP     如:ssh root @116.62.127.18 2.   安裝

Linux(Centos)安裝tomcat並且部署Java Web專案

  b.因為tomcat的安裝依賴於Java jdk,所以我們需要在判斷linux系統下面是否安裝jdk     b.1 使用(Xshell)連線到Linux系統下面     b.2 輸入命令:java -version,如果顯示jdk版本號,則證明已經安

java web專案dao和service前面為什麼要有介面呢??

介面提供了一個公用的方法提供方。 介面是用來規定子類的行為的。舉個例子吧 , 比如有個需求, 需要儲存客戶資訊, 有些客戶從網站來, 有些從手機客戶端來, 有些從後臺管理系統錄入, 假設不同來源的客戶有不同的處理業務流程, 這個時候我定義介面來提供一個儲存客戶的方法, 然後不同平臺實現我這個儲存客戶的介面,

01-使用eclipse新建一個標準java web專案

1.使用eclipse建立個普通的Java SE專案  名稱:CRM   java web標準目錄結構 crm       WEB-INF              class

Eclipse java web專案 ,匯入IntelliJ IDEA 完整操作步驟

或許你用慣了Eclipse,有點排斥其他工具了, 你寫框架的時候,編譯速度是不是特別慢啊? 有時候還超過45秒,自動取消執行! 有時候程式碼是正常的,卻無端端報錯?喝個下午茶回來又好了?

java web專案效能優化五花八門

       最近是做了半年的專案到了最後測試準備上線了,流程走通後開始做一些效能測試,在此期間做了很多效能優化的工作,在此做下筆記,分享一下。交流一下,希望同道中人有新的東西歡迎補充。在此就不做太多的具體操作,主要還是從思路上出發。       效能優化主要從幾個方面著手

Java—— JAVA Web專案中DLL/SO檔案動態載入方法

相信很多做Java的朋友都有過用Java呼叫JNI實現呼叫C或C++方法的經歷,那麼Java Web中又如何實現DLL/SO檔案的動態載入方法呢。今天就給大家帶來一篇JAVA Web專案中DLL/SO檔案動態載入方法的文章。 在Java Web專案中,我們經常會用到通過J

Java Web 專案執行報錯——Compilation error.......ClassFormatException

報錯提示 嚴重: Compilation error org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException 全部報錯資訊 嚴重: Compilation erro

Web安全越權操作:橫向越權與縱向越權

localhost new 用戶修改 情況 name 查看 普通用戶 新的 登錄 參考:http://blog.csdn.net/github_39104978/article/details/78265433 看了上面的文章,對越權操作的概念還是比較模糊,不明確實際場景。

Java IO流 File 操作文件夾

多級 delete 目錄 pri file 表示 HR code port http://www.verejava.com/?id=17160027381247 import java.io.File; public class Test { public s

java成神——jaxb操作xml的基本使用

bind jaxb val element return setters enc class depend JAXB 依賴 讀取xml配置 寫配置 自定義寫配置 結語 JAXB 依賴 <dependency> <groupId>ja