? ? 上篇文章介紹了MyBatis的配置文件,現在來介紹實體映射文件Mapper.xml。
? ? 說道實體映射文件,就不得不說一下實體與表之間的映射關系:單表映射和多表映射。
? ? a. 單表映射
1 public class Admin{ 2 private String id; 3 private String name; 4 private String password; 5 //三個屬性的setter和getter方法 6 }
? ? 映射文件


1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="yitian.study.dao.mapper"> 6 <resultMap id="adminMapper" type="com.xxx.entity.Admin"> 7 <id property="id" column="id"/> 8 <result property="name" column="name"/> 9 <result property="password" column="password"/> 10 </resultMap> 11 <select id="selectAdmin" 12 resultType="Admin" parameterType="Admin"> 13 SELECT * 14 FROM Admin 15 WHERE id = #{id} 16 </select> 17 <select id="selectAdminByName" 18 resultType="Admin"> 19 SELECT * 20 FROM Admin 21 WHERE name = #{name} 22 </select> 23 <insert id="insertAdmin" 24 useGeneratedKeys="true"> 25 INSERT INTO Admin (name, password) VALUES (#{name}, #{password}) 26 </insert> 27 <update id="updateAdmin"> 28 UPDATE Admin 29 SET password = #{password} 30 WHERE id = #{id} 31 </update> 32 <delete id="deleteAdmin"> 33 DELETE FROM Admin 34 WHERE id = #{id} 35 </delete> 36 </mapper>
? ? 映射文件包含實體類的映射和5條SQL語句,分別是增刪查改以及按名稱查找。每一條語句都需要一個標識符(id),將會在后面再代碼中用到。如果是查詢語句還需要resultType,指定返回類型。MyBatis會將數據表列名和這里指定的類型屬性按名稱自動映射起來。如果需要在語句中傳入參數,可以使用 parameterType屬性,指定Java實體類的全名或簡寫,然后就可以在SQL語句中使用#{}來訪問參數的屬性了。如果是簡單的映射,那么parameterType屬性還可以省略,MyBatis會自動從傳入的Java對象中獲取相應的屬性。對于某些數據庫(例如MySQL),還可以在插入的時候指定useGeneratedKeys="true",讓數據庫自動生成主鍵。??
? ? 常用的方法有增刪查改這幾個方法。這些方法的第一個參數是前面我們在映射文件中定義的語句ID,第二個參數是要傳入的參數。對于查詢來說有selectOne和selectList方法,它們的區別主要在于返回個數,如果確定只返回一個對象就使用selectOne方法。
? 示例如下:
1 Admin admin = sqlSession.selectOne("selectAdminByName",name);
? ? 上述方法是采用字符串來指定要使用的查詢。MyBatis還給我們提供了一種映射類的方式來實現sql語句。
? ? 映射類其實就是一個簡單的接口。該接口中的方法和映射文件中定義的語句一一對應。接口方法的名稱必須和語句id完全相同,接口方法的返回值和參數和相應的語句相對應。
public interface AdminMapper {Admin selectAdmin(int id);Admin selectAdminByName(String name);void insertAdmin(Admin admin);void updateAdmin(Admin admin);void deleteAdmin(Admin admin); }
? ?僅僅增加映射類還不夠,我們需要修改映射文件,以便讓MyBatis能找到這個映射類。做法就是將映射文件的命名空間改為對應的映射類的類名。
<mapper namespace="com.xxx.mapper.AdminMapper">
? ?在兩者定義好之后,我們就可以使用了。在SqlSession上調用getMapper方法,并傳入要獲取的Mapper類即可。
1 AdminMapper mapper = sqlSession.getMapper(AdminMapper.class); 2 Admin s = mapper.selectAdminByName(name);
? ? ?b. 多表映射
? ? ??關于多表映射的書寫,請參考這篇文章----《MyBatis快速入門(2):多表映射》個人覺得講的還不錯,本人就不在贅述了。