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 資料存取物件)是指位於業務邏輯和持久化資料之間實現對持久化資料的訪問。通俗來講,就是將資料庫操作都封裝起來。在面向物件設計過程中,有一些"套路”用於
java中Mysql資料庫連線及例項
目標:通過在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)是程式啟動時建立足夠的資料庫連線,並將這些連線組成一個連線池,由程式動態地對池中的連線進行申請,使用,釋放。個人理
java向MySql資料庫中插入資料
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