中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis是怎么來的

發布時間:2021-10-14 13:32:28 來源:億速云 閱讀:134 作者:iii 欄目:編程語言

這篇文章主要介紹“MyBatis是怎么來的”,在日常操作中,相信很多人在MyBatis是怎么來的問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MyBatis是怎么來的”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

JDBC原生操作

在早期開發還沒有ORM框架時我們要操作數據庫都是通過JDBC來操作。

JDBC測試代碼:

/**
 * 原生操作JDBC方式
 * @Author: maomao
 * @Date: 2021-04-07 10:59
 */
public class JdbcTest {

    public static final String URL = "jdbc:mysql://127.0.0.1:3306/data_test?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true";
    public static final String USER_NAME = "root";
    public static final String PASSWORD = "123456";

    @Test
    public void testJdbc(){
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            //打開連接
            connection = DriverManager.getConnection(URL,USER_NAME,PASSWORD);

            //執行SQL
            statement = connection.createStatement();
            String sql = "select * from user_department where id = 1";
            resultSet = statement.executeQuery(sql);

            //獲取結果集,并封裝到java對象中
            while (resultSet.next()){
                User user = new User();
                user.setId(resultSet.getLong("id"));
                user.setName(resultSet.getString("name"));
                user.setAge(resultSet.getInt("age"));
                System.out.println(user);
            }
            //后續使用邏輯。。。。

        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            //關閉資源
            try {
                if (resultSet != null) resultSet.close();
            } catch (SQLException se2) {
            }
            try {
                if (statement != null) statement.close();
            } catch (SQLException se2) {
            }
            try {
                if (connection != null) connection.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }
}

主要分為以下幾步:

  1. 注冊數據庫驅動

  2. 獲取一個Connection連接

  3. 創建一個Statement對象

  4. 執行execute()方法執行sql,獲得ResultSet結果集

  5. 通過ResultSet獲取數據,給POJO賦值,轉為java對象

  6. 最后關閉數據庫相關資源,包括ResultSet、Statement、Connection

如果你 有幸 接觸過一些早期的老項目,可能會在項目Dao層看到很多這樣的操作。

好一點的會將數據庫這些操作做一個工具封裝,不好的你會看到每個查詢方法中就會有類似以上測試代碼一樣的內容。

你可以想象一下現在每個常規的數據庫操作,比如byId()、save()、update()等等這些方法在以前都包裝在類似上邊測試代碼中的樣子(瑟瑟發抖)。

ORM框架

ORM(Object Relational Mapping)也就是對象與關系映射

MyBatis是怎么來的

在早期誕生的比較主流的一個ORM框架是Hibernate,在2001年時誕生了第一個版本。

它幫我們解決了JDBC時期復雜的對象關系映射問題,簡化了數據庫開發操作。讓開發人員無需再關注數據庫連接、對象與數據庫表的映射關系轉換問題。所以早期主流開發J2EE是從SSH(struts + spring + hibernate)開始的。

hibernate本身功能非常強大,有自己的查詢語法HQL可以通過操作對象關系來生成對應的SQL語句,也可以根據數據庫方言生成兼容各數據庫場景的SQL,所以移植性好。自動管理連接資源,還提供了緩存機制。

所以hibernate毫無疑問成為了當時J2EE開發時的主流ORM框架。

但Hibernate在業務復雜的項目中也存在一些問題:

  1. 需要學習新的HQL語法

  2. 自動生成SQL的方式,如果需要基于SQL去做一些優化的話,非常困難,導致性能優化是一個問題。

  3. 不支持動態SQL,無法根據條件自動生成SQL

基于以上問題,我們需要一個更加靈活的框架。此時就誕生了MyBatis(早期叫iBatis)。

MyBatis

MyBatis官網地址

”半自動化“的ORM框架MyBatis就解決了上邊幾個問題。”半自動化“是相當于Hibernate全自動化來說的。它的封裝程度沒有Hibernate那么高,不會自動生成全部的SQL語句,主要解決的是SQL和對象的映射問題。

在MyBatis里,sql和代碼是分離的,所以會寫SQL基本上就會用MyBatis,沒有額外的學習成本。

所以J2EE又迎來了幾次架構變更

  • SSI (Struts2 + Spring + iBatis)

  • SSM(Spring MVC + Spring + MyBatis)

MyBatis憑借小巧、簡單易學、靈活、sql與代碼解耦等特點慢慢取代了Hibernate成為主流ORM框架直到現在。

MyBatis是怎么來的

到此,關于“MyBatis是怎么來的”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淮阳县| 达孜县| 蒙自县| 山阴县| 大同县| 昆明市| 枞阳县| 满城县| 滕州市| 垫江县| 镇坪县| 丰镇市| 宁德市| 绿春县| 合作市| 定州市| 南和县| 克什克腾旗| 东兴市| 车险| 山西省| 扬州市| 横峰县| 永修县| 诸暨市| 察哈| 华宁县| 兴文县| 射阳县| 芮城县| 萨迦县| 鸡西市| 长武县| 益阳市| 江华| 沁阳市| 镇雄县| 化德县| 西宁市| 东港市| 平果县|