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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

11 mybatis-高级应用

發布時間:2025/4/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 11 mybatis-高级应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 TypeHandler使用

MyBatis會用類型處理器將獲取的值以合適的方式轉換成 Java 類型。Mybatis默認為我們實現了許多TypeHandler, 當我們沒有配置指定TypeHandler時,Mybatis會根據參數或者返回結果的不同,默認為我們選擇合適的TypeHandler處理。

mybaits內置了很多TypeHandler,如下:

?

?

自定義一個TypeHandler需要繼承BaseTypeHandler類,并在配置文件中注冊和使用

<typeHandlers>

? <typeHandler handler="自定義TypeHandler"

????????????? javaType="XXX" jdbcType="VARCHAR"/>

</typeHandlers>

<resultMap>

??? <result property="id" column="id"/>

??? <result property="date" column="date" typeHandler="自定義TypeHandler"/>

</resultMap>

2 一對多映射

collection聚合:該方式效率較高,只需要執行一次sql

?

?

collection select嵌套:該方式效率較低,會執行多次sql查詢。對象之間的sql配置是分開的,可重用性較好。

?

3 緩存

Mybatis對緩存提供支持,但是在沒有配置的默認情況下,它只開啟一級緩存,一級緩存只是相對于同一個SqlSession而言,二級緩存是mapper級別的緩存,如下圖:

?

?

一級緩存

(1) ?MyBatis在開啟一個數據庫會話時,會 創建一個新的SqlSession對象,SqlSession對象中會有一個新的Executor對象。Executor對象中持有一個新的PerpetualCache對象;當會話結束時,SqlSession對象及其內部的Executor對象還有PerpetualCache對象也一并釋放掉。不同的sqlSession之間的緩存數據區域(HashMap)是互相不影響的

(2) 同一個 SqlSession 對象, 在參數和 SQL 完全一樣的情況,多次查詢時會使用緩存。

二級緩存

(1) 二級緩存是基于 mapper文件的namespace的,也就是說多個sqlSession可以共享一個mapper中的二級緩存區域,是Application級別的緩存。

(2) 二級緩存有全局和Mapper中的兩種開關配置,默認是關閉的。

(3) 二級緩存要求返回的模型類POJO是序列化的。

二級緩存的流程如下:

?

?

轉載于:https://www.cnblogs.com/lizhuxin/p/10745286.html

總結

以上是生活随笔為你收集整理的11 mybatis-高级应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。