JAVA面試題(28)

    本文首發於cartoon的博客
    轉載請註明出處:cartoonyu.github.io/cartoon-blo…java

  • 什麼是 ORM 框架?
    • ORM全稱是Object-Relational Mapping,中文名稱爲對象-關係映射
    • 使用ORM框架,能大幅度減小數據庫操做代碼的編寫,將主要精力放在對象-關係優化上
    • 常見的ORM框架有hibernate,Mybatis等
  • Mybatis 中 #{}和 ${}的區別是什麼?
    • 在程序編譯時,#{}會用?代替,${}只是簡單的字符串插入
    • #{}做用至關於PrepareStatement,${}做用至關於Statement
    • #{}能在必定程度上防止SQL注入,${}不能
  • Mybatis 有幾種分頁方式?
    • 邏輯分頁
      • 從數據庫返回全部條件符合的數據到內存中,在後端經過邏輯進行分頁
    • 物理分頁
      • 利用limit關鍵字分批查詢數據庫符合條件的數據,內存中只存在分頁後的數據
    • 攔截器分頁、
      • 自定義攔截器實現了攔截全部以ByPage結尾的查詢語句
      • 利用獲取到的分頁相關參數統一在sql語句條件上加上limit分頁相關語句
    • RowBounds分頁
      • 相似邏輯分頁
  • RowBounds 是一次性查詢所有結果嗎?爲何?
    • RowBounds是一次性查詢所有結果
    • 從RowBounds源碼看出,RowBounds最大數據量爲Integer.MAX_VALUE(2147483647),大概是20億條
    • 在實際開發不建議使用RowBounds。數據量達到必定程度,RowBounds所形成的內存壓力比較大
相關文章
相關標籤/搜索