1. 程式人生 > >java入門---mysql資料庫連線之DAO 模式

java入門---mysql資料庫連線之DAO 模式

    DAO (DataAccessobjects 資料存取物件)是指位於業務邏輯和持久化資料之間實現對持久化資料的訪問。通俗來講,就是將資料庫操作都封裝起來。在面向物件設計過程中,有一些"套路”用於解決特定問題稱為模式。DAO 模式提供了訪問關係型資料庫系統所需操作的介面,將資料訪問和業務邏輯分離對上層提供面向物件的資料訪問介面。從以上 DAO 模式使用可以看出,DAO 模式的優勢就在於它實現了兩次隔離:

  • 1、隔離了資料訪問程式碼和業務邏輯程式碼。業務邏輯程式碼直接呼叫DAO方法即可,完全感覺不到資料庫表的存在。分工明確,資料訪問層程式碼變化不影響業務邏輯程式碼,這符合單一職能原則,降低了藕合性,提高了可複用性。
  • 2、隔離了不同資料庫實現。採用面向介面程式設計,如果底層資料庫變化,如由 MySQL 變成 Oracle 只要增加 DAO 介面的新實現類即可,原有 MySQ 實現不用修改。這符合 "開-閉" 原則。該原則降低了程式碼的藕合性,提高了程式碼擴充套件性和系統的可移植性。

    一個典型的DAO 模式主要由以下幾部分組成

  • 1、DAO介面: 把對資料庫的所有操作定義成抽象方法,可以提供多種實現。
  • 2、DAO 實現類: 針對不同資料庫給出DAO介面定義方法的具體實現。
  • 3、實體類:用於存放與傳輸物件資料。
  • 4、資料庫連線和關閉工具類: 避免了資料庫連線和關閉程式碼的重複使用,方便修改。

    首先來看DAO介面:

publicinterfacePetDao{/**
     * 查詢所有寵物
     */List<Pet> findAllPets()throwsException;}

    再來看DAO實現類:

publicclassPetDaoImplextendsBaseDaoimplementsPetDao{/**
     * 查詢所有寵物
     */publicList<Pet> findAllPets()throwsException{Connection conn=BaseDao.getConnection();String sql="select * from pet"
;PreparedStatement stmt= conn.prepareStatement(sql);ResultSet rs=    stmt.executeQuery();List<Pet> petList=newArrayList<Pet>();while(rs.next()){Pet pet=newPet(                     rs.getInt("id"),                     rs.getInt("owner_id"),                     rs.getInt("store_id"),                     rs.getString("name"),                     rs.getString("type_name"),                     rs.getInt("health"),                     rs.getInt("love"),                     rs.getDate("birthday"));                 petList.add(pet);}BaseDao.closeAll(conn, stmt, rs);return petList;}}

    寵物實體類(裡面get/set方法就不列出了):

publicclassPet{privateInteger id;privateInteger ownerId;//主人IDprivateInteger storeId;//商店IDprivateString name;//姓名privateString typeName;//型別privateint health;//健康值privateint love;//愛心值privateDate birthday;//生日}

    然後我們來連線資料庫

publicclassBaseDao{privatestaticString driver="com.mysql.jdbc.Driver";privatestaticString url="jdbc:mysql://127.0.0.1:3306/epet";privatestaticString user="root";privatestaticString password="root";static{try{Class.forName(driver);}catch(ClassNotFoundException e){
                e.printStackTrace();}}publicstaticConnection getConnection()throwsSQLException{returnDriverManager.getConnection(url, user, password);}publicstaticvoid closeAll(Connection conn,Statement stmt,ResultSet rs)throwsSQLException{if(rs!=null){
            rs.close();}if(stmt!=null){
            stmt.close();}if(conn!=null){
            conn.close();}}publicint executeSQL(String preparedSql,Object[] param)throwsClassNotFoundException{Connection conn =null;PreparedStatement pstmt =null;/* 處理SQL,執行SQL */try{
            conn = getConnection();// 得到資料庫連線
            pstmt = conn.prepareStatement(preparedSql);// 得到PreparedStatement物件if(param !=null){for(int i =0; i < param.length; i++){
                    pstmt.setObject(i +1, param[i]);// 為預編譯sql設定引數}}ResultSet num = pstmt.executeQuery();// 執行SQL語句}catch(SQLException e){
            e.printStackTrace();// 處理SQLException異常}finally{try{BaseDao.closeAll(conn, pstmt,null);}catch(SQLException e){    
                e.printStackTrace();}}return0;}}
    好啦,這次就比較簡單了,所以就到這裡了。如果感覺不錯的話,請多多點贊支援哦。。。

相關推薦

java入門---mysql資料庫連線DAO 模式

    DAO (DataAccessobjects 資料存取物件)是指位於業務邏輯和持久化資料之間實現對持久化資料的訪問。通俗來講,就是將資料庫操作都封裝起來。在面向物件設計過程中,有一些"套路”用於

javaMysql資料庫連線及例項

目標:通過在eclipse中載入mysql驅動,將users表中的資料提取出來。 1.建立資料庫 在mysql資料庫中test目錄下建立users資料庫。存取欄位:id username password。 2.構建java專案 2.1 在構建的

Java開發——【錯誤】SSM整合,MySql資料庫連線異常情況JDBC屬性檔案的引用

JUNIT測試錯誤如下 org.apache.ibatis.exceptions.PersistenceException:  ### Error querying database.  Cause: org.springframework.jdbc.CannotG

java實現對mysql資料庫連線

我們需要一個JDBC的庫檔案. 所謂JDBC是用於執行Sql語句的JAVA API,有了這個包就可簡單對mysql進行連線等操作。 首先,實現對資料庫的連線。 public class mysql_connect { static String sql; public st

java資料庫 JDBC的Dao模式(適合初學者)

java 連線資料庫首先要匯入一個jar包 我們來了解一下什麼是jdbc 其實JDBC(Java DataBase Connectivity,java資料庫連線)是一種用於執行SQL語句的Java AP 讀下面程式碼需要大概瞭解Statement常用的方法: Resu

JDBC連線池: Tomcat 8.5 MySQL資料庫連線池的配置與使用

簡介 本文以MySQL資料庫為例,介紹Tomcat 8.5環境下,其預設的資料庫連線池DBCP配置與使用. 連線池簡介 資料庫連線池是在使用者和資料庫之間建立一個”池”,這個池是用來存放資料庫連線物件。回收和重用已存在的資料庫連線比新建一個連線更高效。當用戶想要連線資料庫,

連線mysql資料庫連線報錯,是pom檔案配置mysql連線驅動版本號問題

前一段時間安裝了最新的mysql 8.0.11,然後啟動一個專案的時候報錯資訊如下: [ERROR] 2018-08-14 17:28:21,246 method:com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:6

java面試—mysql資料庫

MYSQL 一、sql的select語句完整的執行順序     1.sql select的執行順序:     1)、from組裝來自不同資料來源的資料;     2)、where基於指定的條件對記錄進行篩選

mysql資料庫連線異常問題(總結) mysql資料庫連線異常問題(總結)

mysql資料庫連線異常問題(總結) 1.1 前言     最近專案由1個數據源增加至了3個數據源(連線池使用C3P0),結果各種奇葩的資料庫連線問題接踵而至,為防止將來再次遇到同樣的問題不犯同樣錯誤,現總結如下。 1.2  An attempt by

java實現mysql資料庫增刪改查

1.連線資料庫: import java.sql.Connection; import java.sql.DriverManager; public class DBConnection { static String driver = "com.mysql.jdbc.Driver"; s

docker中的mysql資料庫連線不上解決辦法

1.在docker內部連線不上mysql資料庫 即在本地模式下不能連線 這時候應該是docker容器重啟過,mysql資料庫沒有啟動的原因,可以使用 service mysql restart 來啟動mysql資料庫 2.在宿主機上不能遠端連線到docker容器中的mysql資料

【搞定MySQL資料庫事務的4種隔離級別詳解

資料庫事務的隔離級別有4種,由低到高分別為Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事務的併發操作中可能會出現髒讀,不可重複讀,幻讀。下面通過事例一一闡述它們的概念與聯絡。 1、讀未提交 

java生成mysql資料庫建表語句、欄位、欄位型別、欄位註釋,可實現不用mysqldump備份資料庫

使用 mysqldump 備份資料庫也是可行的,因為每次備份的時候都需要mysqldump這個檔案, 我在windows備份時沒問題,但是放到linux上面時,centos系統死活不認這個檔案,但又不想裝mysql,一氣之下自己研究了個不需要mysqldump就可以備份的程式, 如果看了以下程式

Django 建立APP和Mysql資料庫連線

軟體版本:Django 1.11.11 Python:3.7.1 pip3:10.0.1 安裝Django,首先確保python和pip在環境變數中 pip install Django==1.11.11 目錄結構: 其中:settings.py是設定檔案: 例如

基於SWOOLE的MYSQL資料庫連線池,php mysql 連線

swoole_mysqlpool 使用Swoole的\Swoole\Coroutine\MySQL建立連線,通過靜態類和靜態成員屬性維護連線池,不同協程可以共享該連線池。 排隊機制(先進先出)使用協程的特殊功能實現: \Swoole\Coroutine::resume(

自制Mysql資料庫連線工具(含使用說明)

我們在對mysql資料庫進行操作時,就要使用JDBC去連線資料庫,所以程式碼不免要出現大量的冗餘,比如連線,關閉等等實現其實都是一樣的,所以聰明的程式設計師就會將這些重複的功能封裝,簡化使用過程,提高程式碼複用性。 1.BaseDao原始碼 package com.x

MySql資料庫連線池專題

一、什麼是資料庫連線池? 官方:資料庫連線池(Connection pooling)是程式啟動時建立足夠的資料庫連線,並將這些連線組成一個連線池,由程式動態地對池中的連線進行申請,使用,釋放。 個人理解:建立資料庫連線是一個很耗時的操作,也容易對資料庫造成安全隱患。所以,在

mysql資料庫連線

[轉]https://www.cnblogs.com/aspir...一、什麼是資料庫連線池?官方:資料庫連線池(Connection pooling)是程式啟動時建立足夠的資料庫連線,並將這些連線組成一個連線池,由程式動態地對池中的連線進行申請,使用,釋放。個人理

javaMySql資料庫中插入資料

package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLExc

python----mysql資料庫連線:以pymysql替代mysqlclient和MySQLdb

在pycharm中,以pymysql替代mysqlclient和MySQLdb 在windows10,終端pip install mysqlclient 時,是安裝不了mysqlclient這個庫的,需要在https://www.lfd.uci.edu/~gohlke/py