繼續接着上一節,大家應該知道駝峰命名法吧!就是我們javabean中屬性一般命名是lastName,userName這種類型的,而數據庫中列名一般都是last_name,user_name這種的,要讓對應起來,在springboot中可以設置

另外大家可以看看我們用了mybatis依賴之后,導入了一些什么jar包,比較關鍵的是那個autoconfigure,其實內部就跟之前我們手寫的那個starter原理差不多


我們也可以用xxxCustomizer來定制功能,以上面的駝峰命名為例,就可以使用這個方式,還能配置其他的很多參數,以后碰到可以再來看看

其實mybatis很多是喜歡用xml的,后期比較好優化sql,所以我們也用xml來嘗試一下
xml配置mybatis
xml配置配置的話就比較繁瑣一點了,兩個xml,然后指定這兩個xml的位置
首先映射文件



然后指定這兩個文件的路徑(對mybatis的配置,yml中都是以mybatis開頭的),后面的使用就和前面注解版一樣了,這里就不增加篇幅了。你們可以自己試試,我試了是沒問題的。

其中,注解版和xml的mybatis是可以一起使用的,不過用起來總是感覺怪怪的,而且如果是比較大的項目sql語句要優化,你一下找注解,一下又去xml找,太不方便了,還是只用其中一種吧!看個人習慣,其實都還行吧,不是怎么難。
下面就繼續說說緩存
緩存(接上一節)
上一節最后用了兩個關於緩存的注解,一個是@EnableCaching開啟注解,二是在service中方法上面用@Cacheable(cacheNames = "stu")來使用緩存
緩存的很多細節就不多說了,因為說了也記不住,說幾個關鍵的地方,分別是CacheManager,Cache,Entry。
因為做緩存方面的公司有很多,做出來的緩存產品也就很多。我們可以把CacheManager看作使用哪一個緩存產品,Cache就是這個緩存產品中的很多個小空間,Entry就是每一個小空間里存放的很多數據(就是很多個鍵值對);
所以我們要使用緩存,那就要先確定使用哪一家公司做出來的緩存產品,然后拿到其中的一個小空間並取個名字,然后將一個對象放進這個小空間里(都說了是很多個鍵值對,我們肯定要設置一個鍵方便我們取啊);
總結起來就是設置CacheManager(springboot默認選好了,后面我們會來自定義),給緩存(小空間)取個名字,設置一個鍵(springboot也默認有生成方式,后面我們也會自定義)
對應於java代碼,就是下圖,所以說,#id的意思就是拿到形參中的id值,所謂key;其實只是簡單的測試,key都不用寫,只用指定緩存的名字就ok了。

類似@Cachable的注解有兩個:@CachePut和@CacheEvict,我們可以看看這三個注解有什么用。(注:具體的這三個注解的屬性自行看其他的資料學習)
@Cacheable(用於查詢):第一次查詢之后把返回結果放進緩存里,之后再調用此方法之前會先在緩存里去找,有就直接拿,沒有才去數據庫。
@CachePut(用於修改和添加):先不管緩存 ,每次必定調用這個方法之后對數據庫里的數據修改,然后根據方法返回值去更新緩存;之后別的方法去查詢,就直接去緩存里查就是最新數據;
@CacheEvict(用於刪除):很明顯,這是在執行刪除方法刪除數據庫數據之后,也把該數據對應的緩存也刪除掉(假如這個注解的屬性cacheName=“stu”,還有個allEntries=true就是刪除stu這個小空間里的所有鍵值對),這個注解有個屬性beforeInvocation,true,在方法執行前清空緩存;false,方法執行之后清空緩存,這也是默認值,假如方法執行異常就不清緩存
這幾個注解配合起來使用的話,要注意一些東西,首先是cacheNames(和value一個效果)要一樣,然后就是鍵(不管你用什么方法,要最后的結果一致),只有當這兩個屬性確定之后,才能在緩存中確定一個鍵值對中對應的值嘛!!!

兩個額外的擴展注解:
第一個是@Caching:這個注解就是上面三個注解的組合注解,為了方便定制一些復雜的緩存規則(其實就是上面三個注解的相互配合使用),emmmm.....現在用不到,用到再說。。。。想知道使用規則的可以自己去學習

第二個是@CacheConfig:這個注解加在類上面,其實就是為了方便我們的使用,你看看上面的三個注解的屬性基本一樣,那是不是可以抽取出來呢?於是就有了這個注解(這也是框架常用手段,常規操作!),具體還有什么屬性自己去查查啊,我就隨意一說;重點還是上面那三個注解。

這一節到此為止,終於把大概的輪廓和基本的用法說完了,后面就要說一下原理了,以及緩存中那三個注解的屬性的一些高級用法了(其實就是自定義一些東西,比如key的生成策略什么的,別想太復雜),順便再說說使用redis
