2013年8月25日 星期日

MyBatis - 使用resultMap(1)


這這一篇MyBatis - 基本安裝 + 使用Select有提過,mybatis使用了reflection的機制對應Field Name將DataBase的資訊映射至指定Class Data(User.class)中,那麼,如果像我習慣把class field name前面加上 _ 或 m_ 的識別符號,如下:
public class User {
 private String _userid;
 private String _name;
 private String _password;
 private String _email;

但是在SELECT Query依然維持:
     SELECT 
      userid as userid, 
      email as email , 
      password, 
      name as Name
     FROM USER 

該怎麼做呢?

需求: 我們需要一次回傳大量的SELECT資料,該怎麼做呢?

這時候就要使用resultMap的機制了,我們將先前的UserMapper.xml更改為如下:


  < select id='getUserById' parameterType='String' resultType='User'>
     SELECT 
      userid as Userid, 
      email as Email , 
      Password, 
      name as Name
     FROM USER 
     WHERE USERID = #{userId}
  </ select>


  
   
   
  

  


在這裡,我們加上了< resultmap></ resultmap>的設定,依照上面設定很容易可以看得出來,
column代表的是SELECT 出來的 field name,而對應的property代表的就是User Class中的field name,如此一來,利用這個方式就不需要名字一定得相同囉。


2013/9/7補充:
  此種方式只適用一次回傳大量資料的resultMap,並不適用SELECT單一資料的resultType,
如果有需要,還是得乖乖指定回傳fieldName,詳情請見MyBatis - 使用resultType回傳單一SELECT資料時都是Null

沒有留言:

張貼留言