多表查询(一对一)2019-09-25

model层中Order类

  • 新增user属性,增加get和set方法
//订单:用户 === 1:1
    private User user;
  • 增加toString2(),为了测试方法中输出看结果
public String toString2() {
        return "Order [id=" + id + ", userId=" + userId + ", number=" + number + ", createtime=" + createtime
                + ", note=" + note + ", user=" + user.toString2() + "]";
    }

OrderMapper.xml文件

  • 新建resultMap映射

            
            
            
            
            
        
        
        
            
             
             
               
                           
          
    
  • 新建查询selOrderAndUser

       

OrderMapper抽象类

  • 新建selOrderAndUser抽象方法
  • 注意:方法名和xml文件中的id相同
  • 返回值类型为Order ,需要传入的参数int oid
//根据订单ID查询订单以及订单对应的用户对象
    public Order selOrderAndUser(int oid) throws SQLException;

OrderTest.java

  • 新建testselOrderAndUser的测试方法
public void testselOrderAndUser() throws SQLException {
        SqlSessionFactory factory = SessionFactoryUtil.getSqlSessionFactory();
        SqlSession sqlSession = factory.openSession();
        //生成动态代理类的方法--根据接口创建出接口对应的动态代理类
        //利用多态技术进行接收--代理类的类名不知道,通过接口类型来指向这个动态代理类(多态)
        OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);           
        Order o = mapper.selOrderAndUser(17);
        System.out.println("一对一" + o.toString2());
        sqlSession.close();
}

逻辑图

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

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

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