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 voidsetProduct_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介面的不同實現,物件將以不同的方式進行排
JavaBean中DAO設計模式介紹
一、資訊系統的開發架構客戶層-------顯示層-------業務層---------資料層---------資料庫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的設計模式與原則 ---------------------------------------------------------------------------------------------------------------------------
淺談java中dao工廠設計模式
<?xml version="1.0"?> <config> <daos> <!-- 組織機構服務介面實現類 --> <dao id="organizationService" type="
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 varch