取值形式的不一樣:#{ } :是以預編譯的形式,將參數設置到sql語句中;PrepareStatement,防止sql注入java
${ }:取出的值直接拼裝在sql語句中:會有安全問題sql
大多數狀況下,咱們取參數的值都應該去使用#{ };數據庫
原生JDBC不支持佔位符的地方咱們就能夠使用${ }進行取值express
#{ }:更豐富的地方,規定參數的一些規則:javaType、jdbcType、mode(存儲過程)、numericScale、resultMap、TypeHandler、jdbcTypeName、expression(將來支持表達式)安全
jdbcType一般須要在某種特定的條件下被設置:在咱們數據爲null的時候,有些數據庫可能不能識別mybatis對null的默認設置mybatis
Select查詢app
自動映射:一、全局setting設置 autoMappingBehavior默認不是Partial,開啓自動映射的功能(惟一要求是列名和javaBean屬性名一致)blog
若是autoMappingBehavior設置爲null則會自動取消自動映射io
數據庫字段命名規範,POJO屬性符合駝峯命名法編譯
開啓自動駝峯命名規則映射功能,mapUnderscoreToCamelCase=true;
二、自定義resultMap,實現高級結果集映射。