日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[转载] 快速学习-Mybatis框架概述

發(fā)布時(shí)間:2025/3/11 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转载] 快速学习-Mybatis框架概述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考鏈接: Java在競(jìng)爭(zhēng)性編程中的快速I/O

第1章 框架概述?

1.1 什么是框架?

1.1.1 什么是框架?

框架(Framework)是整個(gè)或部分系統(tǒng)的可重用設(shè)計(jì),表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實(shí)例間交互的方法;另一種定義認(rèn)為,框架是可被應(yīng)用開發(fā)者定制的應(yīng)用骨架。前者是從應(yīng)用方面而后者是從目的方面給出的定義。?

簡(jiǎn)而言之,框架其實(shí)就是某種應(yīng)用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。簡(jiǎn)單說就是使用別人搭好的舞臺(tái),你來做表演。而且,框架一般是成熟的,不斷升級(jí)的軟件。?

1.1.2 框架要解決的問題?

框架要解決的最重要的一個(gè)問題是技術(shù)整合的問題,在 J2EE 的 框架中,有著各種各樣的技術(shù),不同的軟件企業(yè)需要從 J2EE 中選擇不同的技術(shù),這就使得軟件企業(yè)最終的應(yīng)用依賴于這些技術(shù),技術(shù)自身的復(fù)雜性和技術(shù)的風(fēng)險(xiǎn)性將會(huì)直接對(duì)應(yīng)用造成沖擊。而應(yīng)用是軟件企業(yè)的核心,是競(jìng)爭(zhēng)力的關(guān)鍵所在,因此應(yīng)該將應(yīng)用自身的設(shè)計(jì)和具體的實(shí)現(xiàn)技術(shù)解耦。這樣,軟件企業(yè)的研發(fā)將集中在應(yīng)用的設(shè)計(jì)上,而不是具體的技術(shù)實(shí)現(xiàn),技術(shù)實(shí)現(xiàn)是應(yīng)用的底層支撐,它不應(yīng)該直接對(duì)應(yīng)用產(chǎn)生影響。?

框架一般處在低層應(yīng)用平臺(tái)(如 J2EE)和高層業(yè)務(wù)邏輯之間的中間層。?

1.1.3 軟件開發(fā)的分層重要性?

框架的重要性在于它實(shí)現(xiàn)了部分功能,并且能夠很好的將低層應(yīng)用平臺(tái)和高層業(yè)務(wù)邏輯進(jìn)行了緩和。為了實(shí)現(xiàn)軟件工程中的“高內(nèi)聚、低耦合”。把問題劃分開來各個(gè)解決,易于控制,易于延展,易于分配資源。我們常見的 MVC 軟件設(shè)計(jì)思想就是很好的分層思想。? 通過分層更好的實(shí)現(xiàn)了各個(gè)部分的職責(zé),在每一層將再細(xì)化出不同的框架,分別解決各層關(guān)注的問題。?

1.1.4 分層開發(fā)下的常見框架?

常見的 JavaEE 開發(fā)框架: 1、解決數(shù)據(jù)的持久化問題的框架? ?

1.1.5 MyBatis 框架概述?

mybatis 是一個(gè)優(yōu)秀的基于 java 的持久層框架,它內(nèi)部封裝了 jdbc,使開發(fā)者只需要關(guān)注 sql 語句本身, 而不需要花費(fèi)精力去處理加載驅(qū)動(dòng)、創(chuàng)建連接、創(chuàng)建 statement 等繁雜的過程。?

mybatis 通過 xml 或注解的方式將要執(zhí)行的各種 statement 配置起來,并通過 java 對(duì)象和statement 中sql 的動(dòng)態(tài)參數(shù)進(jìn)行映射生成最終執(zhí)行的 sql 語句,最后由 mybatis 框架執(zhí)行 sql 并將結(jié)果映射為 java 對(duì)象并返回。?

采用 ORM 思想解決了實(shí)體和數(shù)據(jù)庫(kù)映射的問題,對(duì) jdbc 進(jìn)行了封裝,屏蔽了jdbc api 底層訪問細(xì)節(jié),使我們不用與 jdbc api 打交道,就可以完成對(duì)數(shù)據(jù)庫(kù)的持久化操作。?

為了我們能夠更好掌握框架運(yùn)行的內(nèi)部過程,并且有更好的體驗(yàn),下面我們將從自定義 Mybatis 框架開始來學(xué)習(xí)框架。此時(shí)我們將會(huì)體驗(yàn)框架從無到有的過程體驗(yàn),也能夠很好的綜合前面階段所學(xué)的基礎(chǔ)。?

1.2 JDBC 編程的分析?

1.2.1 jdbc 程序的回顧?

public static void main(String[] args) {

? ? ? ? Connection connection = null;

? ? ? ? PreparedStatement preparedStatement = null;

? ? ? ? ResultSet resultSet = null;

? ? ? ? try {

? ? ? ? ? ? //加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)

? ? ? ? ? ? Class.forName("com.mysql.jdbc.Driver");

? ? ? ? ? ? //通過驅(qū)動(dòng)管理類獲取數(shù)據(jù)庫(kù)鏈接

? ? ? ? ? ? connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "ro ot", "root");

? ? ? ? ? ? //定義 sql 語句 ?表示占位符

? ? ? ? ? ? //獲取預(yù)處理 statement

? ? ? ? ? ? preparedStatement = connection.prepareStatement(sql);

? ? ? ? ? ? //設(shè)置參數(shù),第一個(gè)參數(shù)為 sql 語句中參數(shù)的序號(hào)(從 1 開始),第二個(gè)參數(shù)為設(shè)置的

?

? ? ? ? ? ? preparedStatement.setString(1, "王五");

? ? ? ? ? ? //向數(shù)據(jù)庫(kù)發(fā)出 sql 執(zhí)行查詢,查詢出結(jié)果集

? ? ? ? ? ? resultSet = preparedStatement.executeQuery();

? ? ? ? ? ? //遍歷查詢結(jié)果集

? ? ? ? ? ? while (resultSet.next()) {

? ? ? ? ? ? ? ? System.out.println(resultSet.getString("id") + "

? ? ? ? ? ? ? ? ? ? ? ? "+resultSet.getString("username"));

?

? ? ? ? ? ? }

? ? ? ? } catch (Exception e) {

? ? ? ? ? ? e.printStackTrace();

? ? ? ? } finally {

? ? ? ? ? ? //釋放資源

? ? ? ? ? ? if (resultSet != null) {

? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? resultSet.close();

? ? ? ? ? ? ? ? } catch (SQLException e) {

? ? ? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? if (preparedStatement != null) {

? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? preparedStatement.close();

? ? ? ? ? ? ? ? } catch (SQLException e) {

? ? ? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? if (connection != null) {

? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? connection.close();

? ? ? ? ? ? ? ? } catch (SQLException e) {

? ? ? ? ? ? ? ? ? ? // TODO Auto-generated catch block e.printStackTrace();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? }

?

上邊使用 jdbc 的原始方法(未經(jīng)封裝)實(shí)現(xiàn)了查詢數(shù)據(jù)庫(kù)表記錄的操作。?

1.2.2 jdbc 問題分析?

1、數(shù)據(jù)庫(kù)鏈接創(chuàng)建、釋放頻繁造成系統(tǒng)資源浪費(fèi)從而影響系統(tǒng)性能,如果使用數(shù)據(jù)庫(kù)鏈接池可解決此問題。 2、Sql 語句在代碼中硬編碼,造成代碼不易維護(hù),實(shí)際應(yīng)用 sql 變化的可能較大,sql 變動(dòng)需要改變 java代碼。 3、使用 preparedStatement 向占有位符號(hào)傳參數(shù)存在硬編碼,因?yàn)?sql 語句的 where 條件不一定,可能多也可能少,修改 sql 還要修改代碼,系統(tǒng)不易維護(hù)。 4、對(duì)結(jié)果集解析存在硬編碼(查詢列名),sql 變化導(dǎo)致解析代碼變化,系統(tǒng)不易維護(hù),如果能將數(shù)據(jù)庫(kù)記錄封裝成 pojo 對(duì)象解析比較方便。

總結(jié)

以上是生活随笔為你收集整理的[转载] 快速学习-Mybatis框架概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。