2.尚x谷javaSE面試題筆記(7-11)

spring bean的作用域

在這裏插入圖片描述
在這裏插入圖片描述

代碼

創建一個book的bean,然後更改他的scope屬性。
在這裏插入圖片描述
默認加載容器就會創建對象,調用book對象的無參構造方法。
可以驗證一下是不是默認單例。
在這裏插入圖片描述

spring支持的常用數據庫事務傳播屬性和事務隔離級別

在這裏插入圖片描述

傳播屬性(傳播行爲)

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
常用前兩個。比如結賬場景中的單個商品的購買方法。
在這裏插入圖片描述
測試場景:100塊錢,買兩本書,總價爲110元。肯定會失敗的。
默認是required,是一本書都不會成功的,發生失敗,作爲一個整體的事務回滾。
如果想成功一個,就要改成requires_new,會創建新事務,而不是加入事務,兩個事務之間互相隔離。

required

在這裏插入圖片描述

requirs_new

在這裏插入圖片描述
在這裏插入圖片描述

隔離級別

事務併發問題

在這裏插入圖片描述
在這裏插入圖片描述
髒讀理解:當前事務讀到了其他事務更新但是沒提交的值。

隔離級別

在這裏插入圖片描述
在這裏插入圖片描述
隔離級別並不是越高越好,因爲隔離級別高了性能就差。
mysql默認可重複讀的理解:一個事務中,對一個值對讀取,讀幾次都是一樣對,不管別的事務有沒有對這個值進行修改。

隔離級別解決併發問題一覽

在這裏插入圖片描述
從上往下,依次全部解決問題

數據庫對隔離級別的支持

在這裏插入圖片描述

代碼設置隔離級別

在這裏插入圖片描述

springmvc中解決post/get請求的中文亂碼問題

首先貼代碼,前端的表單代碼如下,用來提交數據:
在這裏插入圖片描述
如果前端不作任何處理,後端收到的會是亂碼:
在這裏插入圖片描述

post請求處理亂碼

springmvc提供了CharacterEncodingFilter這一個過濾器來處理亂碼。默認強制編碼是false。
在這裏插入圖片描述
裏面有過濾方法:從這裏可以看到如果符合一定的條件,就會按照我們設置的編碼進行過濾。
在這裏插入圖片描述
爲了讓他觸發,我們需要進行配置。在web.xml文件中配置,注意位置在整個文件的最上方。
在這裏插入圖片描述
根據上面代碼裏面的參數,把需要的參數進行初始化。主要是forceEncoding和encoding類型
千萬記得要有攔截器的攔截映射的配置。
在這裏插入圖片描述
這種方法,只能處理post請求,get亂碼則是無效的。

get請求亂碼

在tomcat的server.xml配置文件中,找第一個connector標籤,增加一個屬性URIEncoding=“UTF-8”。
在這裏插入圖片描述
這是最簡單的處理方法。

簡單談一下springmvc的工作流程

springmvc處理模型數據的方式有2種。

  1. 將方法的返回值設置爲modelAndView。
    在這裏插入圖片描述
  2. 方法的返回值是string類型,入參中傳入map,model,或者modelMap。
    在這裏插入圖片描述

具體的流程圖

在這裏插入圖片描述
中控制器就是在web.xml中配置的那個,如下圖,進行處理。
在這裏插入圖片描述

mybaits中表中的字段名和實體的屬性名不一樣怎麼辦?

針對這種問題有3種解決方案。場景:比如實體屬性是駝峯命名法,但是表中卻是下劃線分隔單詞。查詢的時候就會出現,對不上,屬性名爲null的現象。

解決方案一:寫sql語句的時候起別名

在這裏插入圖片描述

解決方案二:mybatis全劇配置文件開啓駝峯命名規則

在這裏插入圖片描述
這種方法的侷限在於數據庫中必須是last_name,很規矩的那種,才能進行映射,不能是別的。

解決方案三:在Mapper映射文件中使用resultMap來自定義映射規則

在sql語句中,使用resultMap屬性。
在這裏插入圖片描述
然後自定義高級映射。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章