mybatis中多对多关系collection标签的使用

collection字面翻译为集合之意,Java项目开发中常遇到多对多关系的结果,例如,如一个用户可以有多个订单,每个订单可以有多个订单商品,每个商品对应有一个卖家,查询结果中如果某两个对象是多对多关系,一般使用collection标签,可以一次性查出所有数据即所需表字段,通过resultMap结果映射到对应的实体的类变量中,用法例子如下:


    
    
    ...
    
    
        
        
        ...
        
        
            
            
            ...
            
            
                
                
                ...
            
        
    


说明:分别有类User,Order,OrderDetail,Vender,id为select01的SQL语句所查询的结果映射到 map01 的对应User对象的各类变量中,因map01中使用两个collection标签,其外层collection的property属性指定User中的数据类型为Order数据列表的类变量,ofType属性指定Java数据类型为Order,同理,内层collection的property属性指定Order中的数据类型为OrderDetail数据列表的类变量,ofType属性指定Java数据类型为OrderDetail,最内部通过association标签每个订单商品对应的商家进行一对一关联,也即一次性查出所有字段数据然后通过map01进行映射(到相应各个类的类变量),同时使用collection,association标签把各个对象的一对多,多对多,一对一的关系进行关联和映射到相应各个类的类变量;

其中 collection,association 是否可用外部子查询方式获取相关数据列表,没验证过,依据前面一对多关系的实现方式推想应该是可以的;

个人简单总结,可能有错漏之处,欢迎拍照留言指点讨论...
 

你可能感兴趣的:(Java,管理者/开发者,数据库)