多表查询(一对多)

model层中User类

  • 新增List属性,增加get和set方法
//一个用户对应多个订单 1:n
        private List orders;
  • 增加toString2(),为了测试方法中输出看结果
public String toString2() {
            return "User [id=" + id + ", username=" + username + ", birthday=" + birthday + ", sex=" + sex
                    + ", address=" + address + "]";
        }

UserMapper.xml文件

  • 新建resultMap映射

        
         
         
           
               
        
        
        
            
            
            
            
            
        
    
  • 新建查询selUserAndOrders

    
    

UserMapper抽象类

  • 新建selUserAndOrders抽象方法
  • 注意:方法名和xml文件中的id相同
  • 返回值类型为User ,需要传入的参数int id
public User selUserAndOrders(int id) throws SQLException;

MapperTest.java

  • 新建selUserAndOrders的测试方法
public void selUserAndOrders() throws SQLException {
            SqlSessionFactory factory = SessionFactoryUtil.getSqlSessionFactory();
            SqlSession sqlSession = factory.openSession();
            //生成动态代理类的方法--根据接口创建出接口对应的动态代理类
            //利用多态技术进行接收--代理类的类名不知道,通过接口类型来指向这个动态代理类(多态)
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);         
            //查询用户1的信息和订单列表
            User user = mapper.selUserAndOrders(25);
            System.out.println(user);
            sqlSession.close();         
    }   
    

逻辑图

多表连接查询(一对多).png

一对多(表连接查询).png

你可能感兴趣的:(多表查询(一对多))