1. 程式人生 > >java中的DAO設計模式

java中的DAO設計模式

建立資料庫和表

sql語句:

1 2 3 4 5 6 7 8 DROP TABLE IF EXISTS product; CREATE TABLE product( product_id varchar(20) NOT NULL, product_name varchar(50) DEFAULT NULL, price decimal(6,2) DEFAULT NULL, info varchar(100) DEFAULT NULL, PRIMARY KEY(product_id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;

 檔案目錄如下

Product.java

複製程式碼
 1 package com.g.pojo;
 2 
 3 public class Product {
 4     private String product_id;
 5     private String product_name;
 6     private double price;
 7     private String info;
 8     public String getProduct_id() {
 9         return product_id;
10     }
11     public void
setProduct_id(String product_id) { 12 this.product_id = product_id; 13 } 14 public String getProduct_name() { 15 return product_name; 16 } 17 public void setProduct_name(String product_name) { 18 this.product_name = product_name; 19 } 20 public double getPrice() {
21 return price; 22 } 23 public void setPrice(double price) { 24 this.price = price; 25 } 26 public String getInfo() { 27 return info; 28 } 29 public void setInfo(String info) { 30 this.info = info; 31 } 32 33 34 35 }
複製程式碼

ProductDao.java程式碼

複製程式碼
 1 package com.g.dao;
 2 
 3 import java.util.List;
 4 
 5 import com.g.pojo.Product;
 6 
 7 public interface ProductDao {
 8     /**
 9      * 資料庫 新增資料
10      * @param product 要增加的資料物件
11      * @return是否增加成功的標誌
12      * @throws Exception 如果有異常,將直接丟擲
13      */
14     public boolean addProduct(Product product) throws Exception;
15     
16     /**
17      * 查詢全部的Product
18      * @param product_name 產品名稱
19      * @return返回全部的查詢結果,每一個product物件表示表的一行記錄
20      * @throws Exception 如果有異常,將直接丟擲
21      */
22     public List<Product> findAll(String product_name)throws Exception;
23     
24     /**
25      * 根據產品編號查詢產品
26      * @param product_id 產品編號
27      * @return 產品物件
28      * @throws Exception 如果有異常,將直接丟擲
29      */
30     public Product findByProductId(String product_id)throws Exception;
31     
32 }
複製程式碼

ProductService.java程式碼

複製程式碼
 1 package com.g.service;
 2 
 3 import java.util.List;
 4 
 5 import com.g.dao.ProductDao;
 6 import com.g.dao.ProductDaoImpl;
 7 import com.g.db.DBConnection;
 8 import com.g.pojo.Product;
 9 
10 /**
11  * 操作資料庫
12  * @author 思思博士
13  *
14  */
15 public class ProductService implements ProductDao{
16     
17     private DBConnection dbconn=null;
18     private ProductDao dao=null;
19     //在構造方法中例項化資料庫連線,同時例項化dao物件
20     public ProductService() throws Exception{
21         this.dbconn=new DBConnection();
22         //例項化ProductDao的實現類
23         this.dao=new ProductDaoImpl(this.dbconn.getConnection());                
24     }    
25     public boolean addProduct(Product product) throws Exception {
26         boolean flag=false;
27         try{
28             if(this.dao.findByProductId(product.getProduct_id())==null){
29                 //如果要插入的產品編號不存在
30                 flag=this.dao.addProduct(product);//新增一條產品資訊
31             }
32         }
33         catch (Exception e) {
34             throw e;
35         }finally{
36             this.dbconn.close();
37         }
38         
39         return flag;
40     }
41 
42     public List<Product> findAll(String keyWord) throws Exception {
43         List<Product> all=null; //定義產品返回的集合
44         try {
45             all=this.dao.findAll(keyWord);
46         } catch (Exception e) {
47             throw e;
48         }finally{
49             this.dbconn.close();
50         }
51         return all;
52     }
53 
54     public Product findByProductId(String product_id) throws Exception {
55         Product product=null;
56         try {
57             product=this.dao.findByProductId(product_id);
58         } catch (Exception e) {
59             throw e;
60         }finally{
61             this.dbconn.close();
62         }
63         return product;
64     }
65 }
複製程式碼

DBConnection.java程式碼

複製程式碼
 1 package com.g.db;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 
 6 public class DBConnection {
 7     private static final String Driver="com.mysql.jdbc.Driver";
 8     private static final String Url="jdbc:mysql://127.0.0.1:3306/testweb";
 9     private static final String User="root";
10     private static final String Password="gys";
11     private Connection conn=null;
12     
13     //進行資料庫連線
14     public DBConnection() throws Exception{
15         try{
16             //用反射載入資料庫驅動
17             Class.forName(Driver);
18             this.conn=DriverManager.getConnection(Url,User,Password);
19         }
20         catch (Exception e) {
21             throw e;
22         }
23     }
24     //取得資料庫的連線
25     public Connection getConnection(){
26         return this.conn;        
27     }
28     //關閉資料庫
29     public void close() throws Exception{
30         if(this.conn!=null){
31             try {
32                 this.conn.close();
33                 
34             } catch (Exception e) {
35                 throw e;
36             }
37         }
38     }
39     
40 }
複製程式碼

ProductDaoImpI.java程式碼

複製程式碼
 1 package com.g.dao;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.ResultSet;
 6 import java.util.ArrayList;
 7 import java.util.List;
 8 
 9 import com.g.pojo.Product;
10 
11 /**
12  * 實現DAO介面的類.但是不負責資料庫的開啟和關閉
13  * @author 思思博士
14  *
15  */
16 public class ProductDaoImpl implements ProductDao{
17     private Connection conn=null;
18     private PreparedStatement pstmt=null;
19     //通過構造方法取得資料庫連線
20     public ProductDaoImpl(Connection conn){
21         this.conn=conn;
22     }
23     public boolean addProduct(Product product) throws Exception {
24         boolean flag=false;
25         String sql="insert into product(product_id,product_name,price,info) values(?,?,?,?)";
26         this.pstmt=this.conn.prepareStatement(sql);
27         this.pstmt.setString(1,product.getProduct_id());
28         this.pstmt.setString(2,product.getProduct_name());
29         this.pstmt.setDouble(3,product.getPrice());
30         
            
           

相關推薦

工廠模式(think in java設計模式

org 我們 import lac otf 返回值 類型 int ava 工廠模式:工廠模式是利用工廠類的工廠方法創建對象的一種設計模式,目的是創建對象,但是很多時候創建對象我們會考慮很多其他因素~~~~比如限定輸入,限定返回值是否某個,比如在創建的過程中進行一些判斷,通過

叠代器模式(think in java設計模式

一個 div 封裝 imp 叠代器 方法 println rri 數字 叠代器模式:用來叠代一個容器集合數組的一種模式。可能大家很多時候是用for循環進行叠代的,但是實際上for循環內部不能使用remove方法,但是叠代器可以,這是因為叠代器內部進行了該方法的邏輯處理。同樣

模板方法模式(think in java設計模式

方法 bst pac code pri ack 單點 size clas 模板方法模式:模板方法模式顧名思義就是一種構造模塊化的設計模式。將一次行為分為多種行為,靈活的調用不同模塊進行工作。比如在飯店吃飯,分為:點菜,吃飯,買單等行為無論什麽飯店大致都是這三種行為。因此我們

Java設計模式(七):觀察者模式

name int 還要 The else 意圖 http exceptio 所有 介紹 觀察者模式是行為設計模式之一。當您對對象的狀態感興趣並希望在有任何更改時收到通知時,觀察者設計模式非常有用。在觀察者模式中,監視另一個對象狀態的對象稱為Observer,正在被監視的對象

Java設計模式(八):建造者模式

伸縮 null clas 示例代碼 最簡 裝配 角色扮演 app 但是 介紹 今天我們將研究java中的Builder模式。Builder 設計模式是一種創造性的設計模式,如工廠模式和抽象工廠模式。 當Object包含許多屬性時,引入了Builder模式來解決Factory

java設計模式之單例模式、工廠模式

Java中的設計模式            轉載地址:https://www.toutiao.com/i6573486403282272775/ 為什麼要學習設計模式 1)設計模式都是一些相對優秀的解決方案,很多問題都是典型的

java設計模式思想

本質原理 面向介面程式設計的思想 單例模式 餓漢式單例 把構造器私有化, 只能從內部建立物件,物件建立好的引用必須是靜態私有屬性 提供公共的靜態私有方法,用於獲取唯一的物件

java常用設計模式

一.java的設計模式大體上分為三大類: 建立型模式(5種):工廠方法模式,抽象工廠模式,單例模式,建造者模式,原型模式。 結構型模式(7種):介面卡模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。 行為型模式(11種):策略模式、模板方法模

Java設計模式(五):策略模式

策略設計模式是行為設計模式之一。當我們為特定任務使用多個演算法時,使用策略模式,客戶端決定在執行時使用的實際實現。 策略模式的最佳示例之一是Collections.sort()採用Comparator引數的方法。基於Comparator介面的不同實現,物件將以不同的方式進行排

JavaBeanDAO設計模式介紹

                一、資訊系統的開發架構客戶層-------顯示層-------業務層---------資料層---------資料庫1.客戶層:客戶層就是客戶端,簡單的來說就是瀏覽器。2.顯示層:JSP/Servlet,用於給瀏覽器顯示。3.業務層:對於資料層的原子操作進行整合。4.資料層:對

java設計模式-Builder模式

Builder 模式的目的? 抽離複雜物件的建構函式,讓我們可以通過多種方法的排列組合構建複雜的物件。如果構造器引數過多,可以考慮 builder 模式 這樣說也有點抽象,舉個例子吧。 舉個例子 比如 非常熱門的訊息佇列RabbitMQ 的 AMQP.BasicProperties 因為它的屬性比較多

java設計模式-單例模式

java 面試中單例模式基本都是必考的,都有最推薦的方式,也不知道問來幹嘛。下面記錄一下 餓漢式(也不知道為何叫這個名字) public class Singleton { private static final Singleton instance = new Singleton(

Java設計模式 - 觀察者模式【又叫:釋出/訂閱模式

文章目錄 Java中的設計模式 - 觀察者模式【又叫:釋出/訂閱模式】 1、觀察者模式是為了解決什麼問題 2、核心邏輯 3、優點 4、缺點 5、應用場景

java代理設計模式與工廠類設計模式的綜合應用

package cn.mdln.study2; public class TestDemo11 { /**  * 主方法是客戶端,只關心取得通過工廠類取得例項化物件,不關係到底工廠類如何取得,  * 更不會關係主題類是如何例項化介面的,才不會關中間有經歷過那寫不為人知的操作

java設計模式及類部類的定義與使用

1.    設計模式:主流的設計模式主要有23種,它們的特點是實用性好,程式碼簡潔,結構美觀著稱。 2.    架構模式:目前主流的架構模式主要有B/S架構,和C/S架構,判斷一種架構屬於哪一種架構,主要看其邏輯程式碼的位置,若邏輯程式碼在伺服器,屬於B/S架構,若在客戶端

java模板設計模式

需求:編寫一個計算程式碼執行時間的模板 模板設計模式的步驟: 1)先寫出解決該類問題其中的一件解決方案 2)分析程式碼,把會發生變化的程式碼抽出來獨立成一個方法,同時把這個方法寫成一個抽象的方法abstarct  3)若果要使用模板類,就只需要繼承就可以使用, 4)為啦防止

Java工廠設計模式

工廠設計模式是java中要求掌握的三大重點設計模式之一,本文將圍繞它展開詳細敘述。 工廠設計模式分為三種,即簡單工廠模式,工廠方法模式和抽象工廠模式。下面將以購買筆記本為線索展將一依次開展開敘述: 1.簡單工廠模式 簡單工廠模式:專門定義一個類用來建立其它類的例

Java設計模式與原則

Java的設計模式與原則 ---------------------------------------------------------------------------------------------------------------------------

淺談javadao工廠設計模式

<?xml version="1.0"?> <config>     <daos>        <!-- 組織機構服務介面實現類 -->        <dao id="organizationService"            type="

javaDAO設計模式

建立資料庫和表 sql語句: 1 2 3 4 5 6 7 8 DROP TABLE IF EXISTS product; CREATE TABLE product( product_id varchar(20) NOT NULL, product_name varch