1. 程式人生 > >關於mybatis中傳入引數在相應對映檔案中 Collection,List,Map,Set,@Param這幾種的混合傳入的獲取

關於mybatis中傳入引數在相應對映檔案中 Collection,List,Map,Set,@Param這幾種的混合傳入的獲取

本片文章還是基於mybatis的介面的方式(動態代理)來說明:

關於普通多值傳入的方式以及獲取方式連結:點選這裡

 

第一種既有註解,又有普通引數

有註解的可以使用註解使使用的名字,沒有註解的只能使用該引數對應的Key(param1或者其它位置)

示例:(    ‘/’  ------>  表示或者的意思)

public Employee getEmp(@Param("id")Integer id,String lastName);
    取值:id==>#{id/param1}   lastName==>#{param2}

第二種:有普通引數,但是還有一個引數是一個物件

沒有註解的只能使用該引數對應的Key(param1或者其它位置),另一個物件使用對應位置的key獲得該物件,再獲得其相應的屬性!!

示例:

public Employee getEmp(Integer id,Employee emp);
    取值:id==>#{param1}    lastName===>#{param2.lastName}

 

第三種:有普通引數,但是還有一個引數是一個物件(但是該物件又使用了註解)

沒有註解的只能使用該引數對應的Key(param1或者其它位置),另一個物件使用對應位置的key獲得該物件,再獲得其相應的屬性!!(又因為該物件又有註解所以可以使用註解時的名字獲得物件後,再獲得其屬性值)

示例:(    ‘/’  ------>  表示或者的意思)

public Employee getEmp(Integer id,@Param("e")Employee emp);
    取值:id==>#{param1}    lastName===>#{param2.lastName/e.lastName}

 

第四種:如果是Collection(List、Set)型別或者是陣列,

##特別注意:
           mybatis也會特殊處理。也是把傳入的Collection或者陣列封裝在map中。(其中的key是mybatis封裝好了,國定的)
            key:

                    Collection(collection),(如果傳入的是list,其中的key也可以是     (list))
                    陣列            (array)

示例:(    ‘/’  ------>  表示或者的意思)

 

public Employee getEmpById(List<Integer> ids);
    取值:取出第一個id的值:   #{collection[0]}

public Employee getEmpById(Set<Integer> ids);
    取值:取出第一個id的值:   #{collection[0]}

public Employee getEmpById(Collection<Integer> ids);
    取值:取出第一個id的值:   #{collection[0]}

public Employee getEmpById(Array<Integer> ids);
    取值:取出第一個id的值:   #{array[0]}