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級別 曾經在面試的時候被問到過的問題 直到忙到今天才有時間對這個問題進行詳...