1. 程式人生 > >java面試題總結系列(mybatis)

java面試題總結系列(mybatis)

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)