【SSM面向CRUD編程專欄 8】一篇博客快速上手使用MyBatis進行CRUD

?

🛫更多ssm知識見SSM_面向CRUD編程專欄

🚕本博客總結自黑馬程序員的ssm框架視頻

🚒博主對于該知識尚在學習階段

🚄如果發現存在問題請毫不吝嗇的指出

🚀🚀扎哇太棗糕的博客主頁🚀🚀

目錄

1 MyBatis初識

1.1 MyBatis的開發步驟

1.2 mapper映射文件:

1.3?核心配置文件

2 MyBatis的dao層(mapper層)實現

2.1 代理開發方式

2.2 映射文件進階之動態sql

2.3?核心配置文件進階

3 MyBatis多表操作

4 MyBatis實現注解開發


1 MyBatis初識

? ? ? ? 下面都是官方的解答有些過于的生硬,按我個人理解就是MyBatis框架就是用來代替jabcTmplate的一個巨巨巨好用的持久層框架,其底層封裝的東西比較多,所以開發起來就比較快速。MyBatis是一個基于Java的持久層框架,它的內部封裝了jdbc使得開發者只需要關注于SQL語句本身,而不需要花費精力去處理加載驅動、創建連接、創建statement等繁雜的過程。MyBatis通過xml或者注解的方式將要執行的各種statement配置起來,并通過Java對象和statement中的SQL的動態參數進行映射生成需要執行的SQL語句。最后MyBatis框架執行SQL語句并將結果映射成Java對象并返回,采用ORM(將實體類與數據庫表進行映射)思想解決了實體與數據庫映射的問題,對jdbc進行封裝屏蔽了jdbc底層訪問的細節直接完成數據庫持久化操作。

1.1 MyBatis的開發步驟

? ? ? ? MyBatis后期結合spring框架進行開發還是有一些小不同的,以下的開發步驟知識為了快速入門而學習,由簡入難的學習步驟更加有利于知識點進行掌握。

第一步:導入相關依賴

第二步:創建實體類

第三步:創建mapper映射文件

?第四步:創建核心配置文件

測試類及結果:

1.2 mapper映射文件:

映射文件包含的內容? ? ? ? ? ? ? ? ? ??

增刪改查操作

????????原始的jdbc默認事務完成之后進行提交,MyBatis的事務默認完成之后不提交。所以當數據進行增刪改操作時,必須使用sqlsession.commit()進行手動提交。或者調用openSession方法創建sqlSession對象的時候傳參為true,意味著每次更改自動提交。

? ??

? ? ?

? ? ?

1.3?核心配置文件

🤔environments標簽

  • transactionManager標簽的Type值? ? ?
    • JDBC:直接使用JDBC的提交和回滾設置,依賴于從數據源得到的連接來進行事務的管理
    • MANAGED:幾乎不用,了解即可
  • dataSource標簽的Type值
    • UNPOOLED:不使用連接池,數據庫的連接隨著使用創建和釋放
    • POOLED:使用連接池,創建一次,隨用隨取
    • JNDI:幾乎不用,了解即可

?😏Properties標簽?

????????用于加載外部的properties文件,獲得數據源參數信息${}進行引用,配合上面的DataSource標簽進行使用

😑typeAliases標簽

????????為java類定義一個別名,這樣的話就可以在mapper映射文件中使用別名指定參數類型和結果類型了,方便操作。

?? ?核心配置文件中那么多標簽是有順序的,如果不按照規定的順序配置標簽的話,就會導致文件報錯!!!

?? ? 除了自定義別名以外,MyBatis框架已經為一些常用類型設置好了別名,比如int、string、long、double………

?😲mappers標簽

????????用于加載mapper映射文件,暫時只用學習相對路徑加載的這一種

2 MyBatis的dao層(mapper層)實現

2.1 代理開發方式

? ? ? ? Mapper代理開發方式只需要編寫Mapper接口,由MyBatis框架根據接口中定義的方法通過反射創建出相應的代理對象和接口的實現類方法。要想完成以上開發,需要遵循以下規范:

  • 接口的全限名和mapper映射文件中的namespace相同
  • 接口中方法名和mapper映射文件中的每個mapper標簽的子標簽的id相同
  • 接口中方法的參數類型和mapper映射文件中的每個mapper標簽的子標簽的parameterType相同
  • 接口中方法的返回值和mapper映射文件中的每個mapper標簽的子標簽的resultType相同

開發步驟:

????????🥓代理開發最主要的就是上面的四個規范,只要將理解并完成規范之后,開發就會異常的快且方便

第一步:導依賴坐標?

第二步:編寫實體類?

第三步:編寫核心配置文件和數據源配置的properties文件

第四步:對比著接口配置mapper映射文件

測試類及其測試結果:

2.2 映射文件進階之動態sql

?? ? ? ? 上面的這種SQL語句寫法相當一一個精確匹配,但凡三個參數少任意一個都會造成這么一個問題,就是沒有匹配的結果輸出。但是一般的業務情況下如果參數少了一個的話就認為這個參數可以是任意值,也就相當于模糊匹配的概念。要想完成這個功能就需要使用動態SQL語句,也就是使用標簽進行。

🍕<where>和<if>標簽

? ? ? ? ?<if>標簽實際上就是對test屬性值的條件判斷,只有當條件滿足了才會將標簽內部的語句拼接到上面的select語句中,如果都不滿足就會查詢所有,有幾個條件滿足都會拼接到where條件限制,where條件限制不固定就是動態SQL語句的由來。

🍔<foreach>標簽

? ? ? ? <foreach>標簽實際上就是可以拼接SQL語句,有前后的SQL語句成分,有中間的字段值(集合或數組)和分隔符

🌭<sql>片段抽取標簽

2.3?核心配置文件進階

🌮typeHandlers標簽

? ? ? ? 一些情況下我們會有這樣的一個業務需求:java中的數據類型與要存放到數據庫中的類型不一致,或者數據庫中的數據類型和我們需要獲取的類型不一致,這時候就需要我們使用自定義的類型處理器了。typeHandlers標簽就是用于在核心配置文件中對自定義的類型處理器進行注冊使用,于是自定義類型處理器的使用就有兩個比較重要的步驟定義處理器類和核心配置文件注冊。

????????下面的案例就是java中是一個Date類型的數據,需要將date轉成時間毫秒值存儲到數據庫中,從數據庫中取出時還必須是Date類型。

定義處理器類

?核心配置文件注冊

🍜plugins標簽

? ? ? ? MyBatis可以使用第三方的插件進行功能的拓展,plugins標簽就是對拓展功能的注冊

比如說使用分頁插件查詢數據庫信息

第一步:導入分頁插件的相關依賴

第二步:核心配置文件配置分頁插件第三步:測試類中設置分頁參數,并獲取相關參數

????????核心配置文件中的標簽配置是遵循以下順序的,如果順序改變的話會導致報錯,且紅框框住的是相比較而言重要的,且前面都講過

3 MyBatis多表操作

????????表與表之間有三種對應關系:一對一、一對多、多對多,加下來讓我們依次學習一下這三種關系該的表查詢如何操作

🥩一對一

一張訂單唯一對應著一個用戶

第一步:首先要有兩個表和對應的實體類,兩個表之間還要有一個外鍵進行表之間的連接

第二步:對應著mapper接口寫mapper映射文件?第三步:配置核心配置文件?第四步:測試及結果

?? ?還有一種映射關系的配置方式,使用<association>標簽可讀性更加好

🍗多對一

一個用戶對應著多張訂單

第一步:首先要有兩個表和對應的實體類,兩個表之間還要有一個外鍵進行表之間的連接。仔細看,這個案例使用的表還是那兩張表,但是實體類就不是上一個案例的實體類了。

?第二步:對應著mapper接口寫mapper映射文件

?第三步:配置核心配置文件,這里的加載mapper映射文件和上一個案例不一樣,其他配置都一樣?

第四步:測試及結果,這里只查詢用戶id為1的訂單,查詢出來的所有訂單在后面進行拼接,無法全部展示

🍖多對多

一個用戶扮演多個角色,一個角色被多個用戶扮演

?第一步:首先要有三個表和除了連接表之外的實體類,兩個表之間還要有一個連接表進行角色表和用戶表之間的連接。

?第二步:對應著mapper接口寫mapper映射文件

?第三步:配置核心配置文件,這里的別名role1不一樣,其他配置都一樣?

?第四步:測試及結果

????????學到這MyBatis基本上已經夠用了,下面的注解開發只做了解,可以不學,注解開發與xml配置開發的不一樣的地方就是,注解開發使用注解將mapper映射文件取而代之,在核心配置文件里mapper映射文件的加載換成包下注解掃描。

4 MyBatis實現注解開發

簡單的CRUD注解開發

第一步:創建表和實體類、導入依賴 都不再演示

第二步:配置核心配置文件,加載配置文件、配置數據庫、掃描包下注解

第四步:接口方法上加注解,省去mapper映射文件

第五步:和xml開發一樣直接調用方法?

多表查詢的注解開發

一對一

一張訂單唯一對應著一個用戶

第一步:創建user、order表和實體類、導入依賴 都不再演示

第二步:配置核心配置文件,加載配置文件、配置數據庫、掃描包下注解,和上面的一樣不再演示

第三步:接口方法上加注解,省去mapper映射文件

?第四步:和xml開發一樣直接調用方法?

?? ?還有一種注解開發方法,和下面要學習的一對多的開發一樣,提前了解一下

一對多

一個用戶對應著多張訂單

?第一步:創建user、order表和實體類、導入依賴 都不再演示

第二步:配置核心配置文件,加載配置文件、配置數據庫、掃描包下注解,和上面的一樣不再演示

第三步:一對多和一對一的拓展方法一樣,需要借助其它方法進行查詢,在rolemapper創建一個通過id查詢的方法

?第四步:usermapper接口方法上加注解,省去mapper映射文件

第五步:和xml開發一樣直接調用方法?

多對多

一個用戶扮演多個角色,一個角色被多個用戶扮演

?第一步:創建user、sys_user_role、sys_role表和User、Role實體類、導入依賴 都不再演示

?第二步:配置核心配置文件,加載配置文件、配置數據庫、掃描包下注解

第三步:一對多和一對一的拓展方法一樣,需要借助其它方法進行查詢,在ordermapper創建一個通過id查詢的方法

第四步:usermapper接口方法上加注解,省去mapper映射文件

第五步:和xml開發一樣直接調用方法?

????????至此,SSM框架的所有知識點都已經到達入門級別了,接下來就是將前面學的所有的知識點或者說框架進行一個整合,形成一個完整的ssm知識體系了。整合完成之后就是進行一個ssm框架項目的實操,讓我們一起加油吧🤑🤑

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

上一篇:【SSM面向CRUD編程專欄 7】springAop 事務控制_

下一篇:【SSM面向CRUD編程專欄 9】SSM框架整合

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535122.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535122.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535122.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【SSM面向CRUD編程專欄 9】SSM框架整合

&#x1f6eb;更多ssm知識見SSM_面向CRUD編程專欄 &#x1f695;本博客總結自黑馬程序員的ssm框架視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 目…

三萬字速通SSM框架入門知識點,快速上手CRUD

&#x1f6eb;更多ssm知識見SSM_面向CRUD編程專欄 &#x1f695;本博客總結自黑馬程序員的ssm框架視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 目…

無法在web.xml或使用此應用程序部署的jar文件中解析絕對uri:[http://java.sun.com/jsp/jstl/core]

問題簡介 本人是在進行一個ssm框架項目的編寫的時候&#xff0c;在數據庫中查詢到所有的商品信息并返回到頁面使用EL表達式進行展現&#xff0c;但是使用tomcat 9.0.58運行的時候報錯會出現以下報錯情況。 頁面報錯&#xff1a; 控制臺報錯&#xff1a; 解決方法 首先看看是不…

check the manual that corresponds to your MySQL server version for the right syntax to use near

首先判斷自己是在什么情況下報的錯&#xff0c;如果是MyBatis的SQL報錯的話&#xff0c;建議直接點擊目錄跳轉到MyBatis時SQL報錯&#xff0c;避免浪費時間。如果本文能夠對你有所幫助的話&#xff0c;還請在評論區多多支持 目錄 &#x1f37b;運行SQL語句、SQL文件等報錯 &…

MyBatis的逆向工程工具,自動生成數據庫對應的POJO實體類、mapper接口、增刪改查mapper.xml文件

下載MyBatis的逆向工程工具&#xff0c;并解壓縮到一個不包含中文字符的文件夾下&#xff0c;我直接放到了D盤下&#xff0c;下載地址&#xff1a;MyBatis逆向工程工具下載 如何使用MyBatis的逆向工程工具 下載之后使用idea在一個新窗口中打開&#xff0c;選中工具文件之后&am…

『收藏向 期末SSM課設救急』 教你從搭建到測試運行手擼一個SSM項目實戰,附帶源碼,前端頁面、解析和一般遇到的問題(排雷)

&#x1f6eb;ssm知識學習見SSM_面向CRUD編程專欄 &#x1f695;本項目來自動力節點的【米米商城】 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 項目…

【SpringBoot 2】(一)基礎知識了解學習

&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; ? 目錄…

【SpringBoot 2】(二)快速入門案例HelloWorld

&#x1f6eb;更多知識總結見SpringBoot 2專欄 ( &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; ? 目…

【SpringBoot 2】(三)SpringBoot相較于Spring的特點

&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; ? 目錄…

井通swtc能不能漲到2元_買一支2塊到3塊之間的股票,買幾十萬股嗎?這樣操作效果怎么樣?...

有很多新股民有一種看法&#xff0c;認為高價股風險很大&#xff0c;那么可不可以買2到3元的低價股&#xff0c;是不是風險就很小&#xff0c;以后上漲的力度就會很大&#xff1f;這是很多股民都存在的一個誤區&#xff0c;也是很多股市的所謂高手的誤導&#xff0c;他們說&…

cad應用程序的組件中發生了未經處理的異常_什么是CAD/CAM?

與許多其他行業一樣&#xff0c;牙科技術的生產階段也越來越自動化。由于牙科實驗室工作的價格已成為治療計劃和治療的主要因素&#xff0c;因此自動化可以在西歐和美國等高薪地區實現更具競爭力的生產。現在&#xff0c;計算機技術的進步使高性價比的單件生產成為可能。近年來…

【SpringBoot 2】(四)詳析SpringBoot的常用注解

&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680; 目錄 向…

蘋果7手機嚴重卡頓_蘋果手機僅配備4GB運存都不會卡頓,安卓系統為何要更多內存?...

原標題&#xff1a;蘋果手機僅配備4GB運存都不會卡頓&#xff0c;安卓系統為何要更多內存&#xff1f;眾所周知&#xff0c;安卓系統歷經十余年的發展&#xff0c;目前最低的運行需求是8GB內存&#xff0c;如果是旗艦機的話還要標配12GB或更高。但是前幾天剛發布的iPhone12&…

python調用窗口找到文件,使用Python在Mac OS X中查找當前活動窗口

Is there a way to find the application name of the current active window at a given time on Mac OS X using Python?解決方案This should work:#!/usr/bin/pythonfrom AppKit import NSWorkspaceactiveAppName NSWorkspace.sharedWorkspace().activeApplication()[NSAp…

IntelliJ IDEA自動生成自定義的類注釋和方法注釋

目錄 自定義的類注釋 自定義方法注釋 實現效果&#xff1a;不用手寫即可自動生成如下圖的類上注釋和方法上的注釋&#xff0c;我們只需要填寫方法注釋的參數和返回值文字描述即可&#xff0c;大大節省了代碼開發的時間提高代碼開發效率。 &#x1f315; 自定義的類注釋 Fil…

violinplot如何看懂_一張圖告訴你如何看懂個股大趨勢

昨日在T0交易利好消息的影響下&#xff0c;券商股全線大幅高開&#xff0c;帶動三大指數高開走高&#xff0c;科技題材股全線活躍&#xff0c;兩市量能明顯放大&#xff0c;形成量價齊升的良性態勢&#xff0c;上證沖上2917&#xff0c;收在2915&#xff0c;創業板大漲3%以上&a…

jz指令是什么意思_S7-200 SMART 運動控制指令詳解-電氣阿偉帶小白啟程

大家好&#xff0c;我是工控阿偉&#xff0c;今天又跟大家見面了。學習需要堅持&#xff0c;需要鉆研&#xff0c;做技術亦是如此&#xff0c;厚積才能博發。阿偉寫程序都是自己測試使用過的&#xff0c;需要的可以借鑒&#xff0c;避免走彎路。S7-200 smart 運動控制指令由編程…

【SpringBoot 2】(五)自動配置簡析源碼 開發中小技巧

寫在前面&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

jar包導出無法顯示圖片或者音樂_如何制作圖片視頻短片,配上音樂閃耀朋友圈!...

把圖片制作成視頻短片&#xff0c;再配上一首好聽的音樂&#xff0c;發到朋友圈&#xff0c;不僅可以更具創意的分享自己的生活點滴&#xff0c;更能因您的創意獲得一大票的贊哦&#xff01;看到別人分享自己制作的圖片視頻短片&#xff0c;是不是心癢癢也想做一個呢&#xff1…

【SpringBoot 2】(六)配置文件 web開發相關

寫在前面&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…