天天看點

【MyBatis】三層架構

文章目錄

  • ​​三層架構和SSM架構的對應關系​​
  • ​​一、什麼是架構?​​
  • ​​二、三層架構​​
  • ​​三、持久層技術解決方案​​
  • ​​四、Jdbc程式設計的分析​​
  • ​​主要回顧​​

三層架構和SSM架構的對應關系

一、什麼是架構?

架構( Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件執行個體間互動的方法;另一種定義認為,架構是可被應用開發者定制的應用骨架。前者是從應用方面而後者是從目的方面給出的定義。簡而言之,架構其實就是某種應用的半成品,就是一組元件,供你選用完成你自己的系統。簡單說就是使用别人搭好的舞台,你來做表演。而且,架構一般是成熟的,不斷更新的軟體。

通俗的講,它是軟體開發中的一套解決方案,不同的架構解決的是不同的問題。

* 使用架構的好處:

封裝了很多的細節,使開發者可以使用極簡的方式實作功能,大大提高開發效率~

​​傳回頂部​​

二、三層架構

  • 表現層:展示資料
  • 業務層:處理業務需求
  • 持久層:與資料庫互動
【MyBatis】三層架構

三層架構分為:表現層(UI)(web層)、業務邏輯層(BLL)(service層)、資料通路層(DAL)(dao層) ,再加上實體類庫(Model)

1.實體類庫(Model),在Java中,往往将其稱為Entity實體類。資料庫中用于存放資料,而我們通常選擇會用一個專門的類來抽象出資料表的結構,類的屬性就一對一的對應這表的屬性。

·一般來說,Model實體類庫層需要被DAL層,BIL層和UI層引用。

2.資料通路層(DAL — dao層 ),主要是存放對資料類的通路,即對資料庫的添加、删除、修改、更新等基本操作

·DAL就是根據業務需求,構造SQL語句,構造參數,調用幫助類,擷取結果,DAL層被BIL層調用

3.業務邏輯層(BLL — service層)

·BLL層好比是橋梁,将UI表示層與DAL資料通路層之間聯系起來。所要負責的,就是處理涉及業務邏輯相關的問題,比如在調用通路資料庫之前,先處理資料、判斷資料。

​​傳回頂部​​

三、持久層技術解決方案

  • JDBC技術
  • Connection
  • PreparedStatement
  • ResultSet
  • Spring的JdbcTemplate
  • Spring中對jdbc的簡單封裝
  • Apache的DBUtils
  • 它和SpringJdbcTemplate很像,也是對jdbc的簡單封裝

以上這些都不是架構,JDBC是規範,Spring的JdbcTemplate和Apache的DBUtils都隻是工具類

四、Jdbc程式設計的分析

主要回顧

public class dbHelper {

    // 添加資料庫配置資訊
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DATABASE_URL ="jdbc:mysql://localhost:3306/jdbc";
    static String username="root";
    static String password="123456";

    // 常用對象
    static Connection conn = null;
    static PreparedStatement preparedStatement = null;
    static Statement statement = null;
    static ResultSet resultSet = null;

    /**
     *  連接配接資料庫
     */
    public static Connection getConn(){

        try {
            // 1.加載驅動
            Class.forName(JDBC_DRIVER);
            // 2.使用DriverManager建立連接配接
            conn  = DriverManager.getConnection(DATABASE_URL,username,password);
        } catch (Exception e){
            e.printStackTrace();
        }
        return conn;
    }
    
     /**
     *  進行查詢
     */
    public static void select(String sql){
        try {
            getConn();
            // 通過conn建立statement,幫助執行sql語句
            statement = conn.createStatement();
            // 執行sql語句存入結果集
            resultSet = statement.executeQuery(sql);
            System.out.println(resultSet);
            // 輸出查詢結果
            System.out.println("id\t|name\t|sex\t|email\t\t\t|birthday");
            // 周遊結果集擷取表記錄
            while (resultSet.next()){
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String sex = resultSet.getString("sex");
                String email = resultSet.getString("email");
                Date birthday = resultSet.getDate("birthday");
                // 輸出結果
                System.out.println(id+"\t|"+name+"\t|"+sex+"\t\t|"+email+"\t|"+birthday);
            }

        } catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     *  關閉資源
     */
    public static void close(){
        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (preparedStatement!=null){
            try {
                preparedStatement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}