用户和角色之间是多对多的关系,也就是说,一个用户可以有多个角色与之绑定,所以在User对象中,角色的属性就必须是一个集合Set或者List,这里我们就用List集合在做例子:
1.怎么在Mybatis中实现关联的List集合对象roles的查询,关键就是collection标签的使用:
2.同样和association标签查询单个关联对象的属性一样,集合类型的关联属性也可以懒加载:
把前面的三表联合查询,变量两段,先查出user对象,然后在根据user_id查询出对应的角色list集合
配合上全局变量的设置,懒加载即实现了:
最后在总结一下,并补充两个知识点:
不管是association标签还是collection标签,在分步查询的时候,都可以用column属性,给select指定的sql语句传入某列的值做参数,这里补充的第一个知识点就是,前面的传参都是只传入了一个参数,所以,如果需要传入多个参数是怎么办? 可以封装成Map对象,写成这个的格式{key=value,.....}
第二个知识点,其实前面已经提及了一下,就是全局虽然设置为了懒加载,但是如果某个关联对象查询,不想使用懒加载,要立即加载,不用在改回全局变量,只需要association标签或者collection标签设置上fetchType属性就可以,它有两个取值:lazy表示懒加载,eager表示立即加载!