java面試題總結系列(mybatis)
阿新 • • 發佈:2019-04-19
session prope nth factory java面試 註入 使用 {} exe
mybatis的工作原理
1.通過輸入流讀取並加載myabtis全局配置文件和mapper映射文件,生成configuration對象和一個個MapperStatement對象。
2.SqlsessionFactoryBuilder通過configuration生成sqsessionFactory,用於開啟sqlsession會話。
3.sqlsession完成與數據庫的交互。
a.用戶程序調用myabtis的api(即mapper層的方法)
b.sqlsession通過調用api的statement id找到對應的mapperdstatement對象。
c.executor將mapperdstatement進行解析,使用ParameterHandler填充參數;使用StatementHandler綁定參數和sql;
d.獲取數據庫連接,執行sql,使用ResultSetHandler處理返回結果集。
f.關閉sqlsession會話。
${}和#{}的區別
${}是properties文件中的變量占位符,屬於靜態文本替換。
#{}是sql的參數占位符,mybatis會將#{}替換成?號,在sql執行前使用preparedStatement,調用參數的設置方法,防止sql註入。
java面試題總結系列(mybatis)