MyBatis——MappedStatement詳解

MyBatis通過MappedStatement描述<select|update|insert|delete>或者@Select、@Update等註解配置的SQL信息。在介紹MappedStatement組件之前,我們先來了解一下MyBatis中SQL Mapper的配置。不同類型的SQL語句需要使用對應的XML標籤進行配置。這些標籤提供了很多屬性,用來控制每條SQL語句的執行行爲。下面是<select>標籤中的所有屬性:

  • id:在命名空間中唯一的標識符,可以被用來引用這條配置信息。
  • parameterType:用於指定這條語句的參數類的完全限定名或別名。這個屬性是可選的,MyBatis能夠根據Mapper接口方法中的參數類型推斷出傳入語句的類型。
  • parameterMap:引用通過<parameterMap>標籤定義的參數映射,該屬性已經廢棄。
  • resultType:從這條語句中返回的期望類型的類的完全限定名或別名。注意,如果返回結果是集合類型,則resultType屬性應該指定集合中可以包含的類型,而不是集合本身。
  • resultMap:用於引用通過<resultMap>標籤配置的實體屬性與數據庫字段之間建立的結果集的映射(注意:resultMap和resultType屬性不能同時使用)。
  • flushCache:用於控制是否刷新緩存。如果將其設置爲true,則任何時候只要語句被調用,都會導致本地緩存和二級緩存被清空,默認值爲false。
  • useCache:是否使用二級緩存。如果將其設置爲true,則會導致本條語句的結果被緩存在MyBatis的二級緩存中,對應<select>標籤,該屬性的默認值爲true。
  • timeout:驅動程序等待數據庫返回請求結果的秒數,超時將會拋出異常。
  • fetchSize:用於設置JDBC中Statement對象的fetchSize屬性,該屬性用於指定SQL執行後返回的最大行數。
  • statementType:參數可選值爲STATEMENT、PREPARED或CALLABLE,這會讓MyBatis分別使用Statement、PreparedStatement或CallableStatement與數據庫交互,默認值爲PREPARED。
  • resultSetType:參數可選值爲FORWARD_ONLY、SCROLL_SENSITIVE或SCROLL_INSENSITIVE,用於設置ResultSet對象的特徵,具體可參考第2章JDBC規範的相關內容。默認未設置,由JDBC驅動決定。
  • databaseId:如果配置了databaseIdProvider,MyBatis會加載所有不帶databaseId或匹配當前databaseId的語句。
  • resultOrdered:這個設置僅針對嵌套結果select語句適用,如果爲true,就是假定嵌套結果包含在一起或分組在一起,這樣的話,當返回一個主結果行的時候,就不會發生對前面結果集引用的情況。這就使得在獲取嵌套結果集的時候不至於導致內存不夠用,默認值爲false。
  • resultSets:這個設置僅對多結果集的情況適用,它將列出語句執行後返回的結果集並每個結果集給一個名稱,名稱使用逗號分隔。
  • lang:該屬性用於指定LanguageDriver實現,MyBatis中的LanguageDriver用於解析<select|update|insert|delete>標籤中的SQL語句,生成SqlSource對象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章