之前已經講到通過 mybatis-generator 生成mapper映射接口和相關的映射配置檔案:

下面我們将詳細的講解具體内容
首先我們建立映射接口文檔 sysUserExtMapper.java,同時新增相關配置檔案sysUserExtMapper.xml。通過操作這兩個類我們來講解具體内容。
MyBatis提供了多種元素來配置不同類型的語句,如SELECT,INSERT,UPDATE,DELETE。接下來讓我們看看如何具體配置映射語句。
一個INSERT SQL語句可以在<insert>元素在sysUserExtMapper.xml中配置,如下所示:
View Code
同時在 sysUserExtMapper.java接口中添加相應的方法
增加相對應單元測試檢視相關效果
執行效果
【自動生成主鍵】
在上述的INSERT語句中,我們為可以自動生成(auto-generated)主鍵的列 id 插入值。
我們可以使用useGeneratedKeys 和 keyProperty屬性讓資料庫生成AUTO_INCREMENT列的值,并将生成的值設定到其中一個輸入對象屬性内,如下所示:
有些資料庫如Oracle并不支援 AUTO_INCREMENT 列,其使用序列(SEQUENCE),或者其他查詢(uuid)來生成主鍵值,如下所示:
一個UPDATE SQL語句可以在<update>元素在映射器XML配置檔案中配置,如下所示:
同時在映射器接口中添加相應的方法
測試效果
一個DELETE SQL語句可以在<delete>元素在映射器XML配置檔案中配置,如下所示:
一個SELECT SQL語句可以在<select>元素在映射器XML配置檔案中配置,如下所示:
在<select>語句中,我們使用了resultMap屬性,而不是resultType來引用映射。
當<select>語句中配置了resutlMap屬性,MyBatis會使用此資料庫列名與對象屬性映射關系來填充JavaBean中的屬性。
讓我們來看另外一個<select>映射語句定義的例子,怎樣将查詢結果填充到HashMap中。如下所示:
在上述的<select>語句中,我們将resultType配置成map,即java.util.HashMap的别名。在這種情況下,結果集的列名将會作為Map中的key值,而列值将作為Map的value值。
映射器接口中添加相應的方法
讓我們再看一個 使用resultType=”map”,傳回多行結果的例子:
首先我們要在 sys_User中增加 sys_user_info對象。下面同理
我們可以從從另外一個<resultMap>,拓展出一個新的<resultMap>,這樣,原先的屬性映射可以繼承過來,以實作。
擴充方法來使用它
在我們的域模型樣例中,每一個使用者都有一個與之關聯的使用者擴充資訊。表sys_user有一個id列,是sys_user_info表的外鍵。我們定義一個resultMap中,sys_user_info的屬性使用了圓點記法被賦上了對應列的值。
上述樣例展示了一對一關聯映射的一種方法。然而,使用這種方式映射,如果sysuserinfo結果需要在其他的SELECT映射語句中映射成Address對象,我們需要為每一個語句重複這種映射關系。MyBatis提供了更好地實作一對一關聯映射的方法:嵌套結果ResultMap和嵌套select查詢語句。
嵌套結果ResultMap
相對應的擴充方法來使用它
元素<association>被用來導入“有一個”(has-one)類型的關聯。在上述的例子中,我們使用了<association>元素引用了另外的在同一個XML檔案中定義的<resultMap>。也可以使用<association>定義内聯的resultMap。
嵌套select查詢語句
我們建立一張機構表一個機構包含多個使用者。在sys_org中增加sys_user對象。
級聯查詢的時候,主表和從表有一樣的字段名的時候,在mysql上指令查詢是沒問題的。但在mybatis中主從表需要為相同字段名設定别名。
<collection>元素被用來将多行結果映射成一個對象的一個集合。