文章目錄
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種。
- 將方法的返回值設置爲modelAndView。
- 方法的返回值是string類型,入參中傳入map,model,或者modelMap。
具體的流程圖
中控制器就是在web.xml中配置的那個,如下圖,進行處理。
mybaits中表中的字段名和實體的屬性名不一樣怎麼辦?
針對這種問題有3種解決方案。場景:比如實體屬性是駝峯命名法,但是表中卻是下劃線分隔單詞。查詢的時候就會出現,對不上,屬性名爲null的現象。
解決方案一:寫sql語句的時候起別名
解決方案二:mybatis全劇配置文件開啓駝峯命名規則
這種方法的侷限在於數據庫中必須是last_name,很規矩的那種,才能進行映射,不能是別的。
解決方案三:在Mapper映射文件中使用resultMap來自定義映射規則
在sql語句中,使用resultMap屬性。
然後自定義高級映射。