關於mybatis的一些學習筆記

2021-08-08 08:38:33 字數 2237 閱讀 6547

properties定義在配置檔案中可以使用的變數

property name=」」 value=」」

引用變數 #

檔名.properties 放與資料庫連線的資訊

儲存driver url username userpasswd鍵值成對儲存資訊

在properties標籤中

外部檔案優先於內部定義的properties

typealiases指定型別取別名

對映檔案中type returntype parametertype使用

可以直接掃瞄包,將先判斷是否有註解別名,沒有則包中所有類取預設別名=類名

在pojo類中@alias(「別名」) 註解 和掃瞄包連用

environments當前資料庫環境default=「」預設環境

可以定義多個environment

每乙個environment中必須有

transactionmanager(事務的控制)jdbc/managed事務管理器

datasource(資料來源 type=(pooled/unpooled連線池/jndi應用伺服器配置好的目錄))

dev開發環境 test測試環境 qa質量評估環境

uat使用者驗收環境 production生產環境

獲取指定的sqlsessionfactory= new sqlsessionfactorybuilder.build(配置檔案,enviroment id)

讀取配置檔案核心是獲取sqlsessionfactory

然後獲取sqlsession 執行sql語句

型別處理器typehandler

自定義型別處理器

com.briup.handler

phnonetypehandler繼承basetypehandler

t代表需要進行型別處理的資料型別

settings全域性引數設定

增加到日誌名稱的字首。值可以是任意字串

自定義mybatis日誌

mybatis支援的日誌有(優先順序遞減排列):

slf4j

apache commons logging

log4j2

log4j

jdk logging

insert插入語句

insert into s_student(id,name,gender)

values (#,#,#)

mysql以及其他資料庫中可以自動生成主鍵,如:

insert into students(name,email,phone)

values (#,#,#)

適合oracle使用的

select my_seq.nextval from dual

insert into students(stud_id,name,email,phone)

values (#,#,#,#)

selectkey需要注意order 屬性,像mysql,sqlserver等一類支援自動增長型別的資料庫中,order需要設定為after才會取到正確的值。

想oracle這樣取序列的情況,需要設定為before,否則會報錯。

適合所有使用的,但是這樣的話,id值不會存在於物件屬性中

insert into students(id,name,email,phone)

values (my_sql.nextval,#,#,#)

update 可以返回乙個int也可以選擇不返回,代表更新的行數

delete刪除語句

resulttype代表已經存在的模擬如基本資料型別,列舉,以及其他已經定義的類

resultmap未定義的不存在類,指定了他和資料庫中字段的一一對應方式。

巢狀結果:在resultmap中定義association來指定一對一,collection來指定一對多的結果巢狀,再次定義resultmap來作為字段值。

巢狀查詢:在resultmap中使用 assiciation來指定一對一,用乙個select查詢,再次查詢此字段值代表的屬性,然後返回。

select查詢語句

select中resultmap以及type定義的是一行所代表的乙個物件。可以在介面中定義list來接受一組物件

可以在resulttype中定義map(預設hashmap),set(預設hashmap),sortedset(預設treeset,被排序的物件需要實現compareable介面)

特殊符號如< 使用

SQL 關於mybatis的sql一些引數

selectkey在mybatis中是為了解決insert資料時不支援主鍵自動生成的問題,他可以很隨意的設定生成主鍵的方式。statement是要執行的sql語句,它的返回值通過resulttype來指定 before表示查詢語句statement執行的時機 keyproperty表示查詢結果賦值給...

關於Jpa和Mybatis的一些看法

現在網路上充斥著jpa和mybatis的一些對比。其實狹義上來說是hibernate和mybatis之間的比較。例如 為什麼感覺國內比較流行的 mybatis 在國外好像沒人用的樣子?下面是一些截圖 既然 jpa 用起來省心,沒必要硬跟某些大廠的步伐,一步兩步,似魔鬼的步伐!就像 技術十年裡說的 如...

關於日誌的一些學習

為什麼要打日誌 在日常開發中 日誌起到至關重要的作用 因為專案上線後不允許你除錯,你只能通過log來分析問題。專案出問題時,你要能拿出log證明自己負責的部分沒有問題,如果是自己的問題,要從log裡快速找出錯誤原因 關於log級別 曾經在面試的時候被問到過的問題 直到忙到今天才有時間對這個問題進行詳...