小型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