Mybatis一对一和一对多配置(三)

2015-07-24 09:35:06 · 作者: · 浏览: 10

这里需要用到两个标签,< collection >和< association >

< collection >用来表示一对多关系,如订单包含多个订单详情就可以用这个标签,主要用到两个属性:
property:属性名,可以理解为在该类型在父类型中的属性名
ofType:该属性所对应的POJO类型

< association >用来表示一对一关系,如订单详情对应一件商品,主要用到两个属性
property:属性名,可以理解为在该类型在父类型中的属性名
javaType:该属性所对应的POJO类型

特别注意,collection和association中描述POJO类型的属性名是不同的,collection是ofType,association是javaType

sql

为了方便重用,定了了三个sql标签,用来表示从三张表中索要查找的字段


           
          
            orders.id orders_id,orders.user_id orders_user_id, orders.number orders_number,orders.createtime orders_createtime,orders.note orders_note 
           
           
          
            orderdetail.id orderdetail_id,orderdetail.orders_id orderdetail_orders_id, orderdetail.items_id orderdetail_items_id,orderdetail.items_num orderdetail_items_num 
           
           
          
            items.id items_id,items.name items_name,items.price items_price, items.detail items_detail,items.pic items_pic,items.createtime items_createtime 
          

select标签

OrderResultMap就要勇当之前说过的collection和association标签,其余的部分与普通的resultMap的方式一样


             
              
               
                
                 
                  
                   
                   
                    
                     
                      
                       
                        
                        
                         
                          
                           
                            
                             
                              
                             
                            
                           
                          
                         
                        
                        
                      
                     
                    
                   
                   
                 
                
               
              
             
            

POJO之间的关系,也相当于数据表之间的关系,只要定义好了主键和外键,mybatis会自动进行关联。

测试代码
package cn.elinzhou.mybatisTest.test; import cn.elinzhou.mybatisTest.mapper.OrdersMapper; import cn.elinzhou.mybatisTest.pojo.Orders; import cn.elinzhou.mybatisTest.pojo.OrdersCustrom; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; import java.io.Reader; import java.util.List; /** * Created by elin on 15-6-30. */ public class OrderMapperTest { SqlSession sqlSession = null; @Before public void setUp() throws Exception { // 通过配置文件获取数据库连接信息 Reader reader = Resources.getResourceAsReader("cn/elinzhou/mybatisTest/config/mybatis.xml"); // 通过配置信息构建一个SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); // 通过sqlSessionFactory打开一个数据库会话 sqlSession = sqlSessionFactory.openSession(); } @Test public void testFindOrders() throws Exception { OrdersMapper orderMapper = sqlSession.getMapper(OrdersMapper.class); List
             
               list = orderMapper.findOrders(); System.out.println(list); } }