MySQL介紹,第一篇 mybatis的簡介

 2023-10-07 阅读 32 评论 0

摘要:?????? mybatis的目前最流行的ORM框架,幾乎涵蓋所有的互聯網的領域,那么mybatis為什么會這么流行,相較JDBC和其他ORM框架又有什么樣的特點和優勢?我們會在接下來的學習中逐漸揭開? 一、 JDBC回顧 ???? 我們先來回顧傳統的JDBC開發,

?????? mybatis的目前最流行的ORM框架,幾乎涵蓋所有的互聯網的領域,那么mybatis為什么會這么流行,相較JDBC和其他ORM框架又有什么樣的特點和優勢?我們會在接下來的學習中逐漸揭開?

一、 JDBC回顧

???? 我們先來回顧傳統的JDBC開發,作為java提供給數據庫廠商的接口規范,根據數據庫的不同,有不同的實現方法,那么,JDBC的開發需要哪些步驟:

??? (1) 加載驅動
??? (2) 配置數據庫連接參數
??? (3) 獲取數據庫連接connection
??? (4) 獲取SQL執行通道statement
??? (5) 執行SQL,返回結果集resultSet
??? (6) 關閉數據庫所有的連接通道
下面是操作代碼:

package com.fan.jdbcdemo;import java.sql.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class JdbcDemo {public static void main(String[] args) {try{Class.forName("com.mysql.jdbc.Driver");Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","www1928..com");Statement st = connection.createStatement();ResultSet rs = st.executeQuery("SELECT * FROM USER WHERE NAME = 'zhangqian'");Map<String, Object> resultMap = new HashMap<String, Object>(8);/*封裝結果集*/while(rs.next()) {resultMap.put("name", rs.getString(1));resultMap.put("age", rs.getString(2));}Set<Map.Entry<String, Object>> set = resultMap.entrySet();Iterator<Map.Entry<String, Object>> iterator = set.iterator();while(iterator.hasNext()) {Map.Entry<String, Object> entry = iterator.next();System.out.println(entry.getKey() + ":" + entry.getValue());}} catch(Exception e) {e.printStackTrace();}finally {
//關閉連接通道,就不寫了
}} }

MySQL介紹??????? 上面的數據庫操作中,我們不僅需要通過大量代碼去查詢結果集,還得將結果手動封裝,才能被其他代碼調用,所以在實際的項目開發中,這顯然會產生大量的無意義的重復性代碼,所以需要將重復的代碼進行抽取,

可以看出變化的都只是數據和結果集的映射,諸如數據庫連接等是一直不變,所以為了解決這種問題就出現了ORM(Object? Reliational Mapper)框架,最早的ORM要追隨EJB框架,但是EJB過于復雜,

很快就被淘汰,隨之出現了Hibernate框架, Hibernate的出現解決了持久層代碼重復的問題,但是隨著互聯網的發展,數據量越來越大,業務越來越復雜,數據庫表變復雜,由于,高度的對sql的封裝,

MybatisPlus?導致在性能上無法進行優化,甚至在一些查詢,直接導致全表掃描等問題,這在今天網站訪問中是不被允許的,為了解決的Hibernate的問題,半自動框架mybatis隨之而生。

二、認識Mybatis

?????? 那么,Mybatis的相較于JDBC做了哪些優化了,首先提一下Mybatis的開發步驟:

????? (1)配置config.xml文件(主要配置數據庫連接,驅動,緩存等)

????? (2)配置映射文件mapper.xml(主要配置SQL和接口的映射)

??????? (3)? 獲取session執行數據庫操作,返回結果集

????? (4)關閉session對象

????? 可以看出,Mybatis框架,封裝了數據路連接和結果集封裝的代碼,使用者只需要關心session對象和sql語句,在與Spring集成之后,幾乎所有的功能代碼交給框架,而開發人員只需要關心業務邏輯

代碼。

三、JDBC、Mybatis、Hibernate的優缺點

(1)JDBC

??????? 優點:原生javaAPI,執行效率高

??????? 缺點:重復性代碼過多

???????? ? ? ? ?? 需要管理數據庫連接

???????? ? ? ? ? 使用完成后需要關閉所有對象資源

(2)Hibernate

??????? 優點:

??????????????? 消除了代碼的映射的規則
?????????????? 無需管理數據庫連接

?????????????? 提供緩存支持
???????????? ? 持久化操作只需要操作session對象即可
??????????? ?? 關閉資源只需要關閉session對象

??????? 缺點:

????????????? 由于是對象和字段映射,對于更新操作需要發送所有字段,占用資源
??????????? ? 無法根據不同的條件組裝不同SQL
?????????? ?? 對于復雜的SQL查詢,需要自己完成SQL,并封裝結果集
???????????? 不能有效支持存儲過程
???????????? 無法優化SQL,性能差

(3)Mybatis

????? 優點:

????????? 可以動態生成映射關系
???????? 消除了大多數JDBC代碼
???????? 提供緩存支持
???????? 支持多數日志接口
???????? 可以靈活的優化SQL
???????? 維護簡單,上手難度低

????? 缺點:

??????? 需要自己動手完成SQL編寫,工作量大

轉載于:https://www.cnblogs.com/zhexuejun/p/11190301.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/125251.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息