关于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]}

猜你喜欢

转载自blog.csdn.net/qq_38263083/article/details/82685034
今日推荐