千峰商城-springboot项目搭建-14-关联查询实现

1.添加实体类Orders.java

package com.qfedu.tkmapperdemo.beans;

import lombok.Data;
@Data
public class Orders {
private String orderId;
private Integer userId;
private String receiverName;
private String receiverMobile;
private String receiverAddress;
}

 

2.添加OrderDAO.java:

package com.qfedu.tkmapperdemo.dao;

import com.qfedu.tkmapperdemo.beans.Orders;
import com.qfedu.tkmapperdemo.general.GeneralDAO;

public interface OrderDAO extends GeneralDAO<Orders> {
}

 

 

3.编写UserDAOTest.java:

package com.qfedu.tkmapperdemo.dao;

import com.qfedu.tkmapperdemo.TkmapperDemoApplication;
import com.qfedu.tkmapperdemo.beans.Orders;
import com.qfedu.tkmapperdemo.beans.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = TkmapperDemoApplication.class)
public class UserDAOTest {
    @Autowired
    private UserDAO userDAO;
    @Autowired
    private OrderDAO orderDAO;

    @Test
    public void testSelect(){
        //查询用户的同时查询订单
        Example example = new Example(User.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("username","zhangsan");

        //根据用户名查询用户
        //1.先根据用户名查询用户信息
        List<User> users = userDAO.selectByExample(example);
        User user = users.get(0);

        //2.再根据用户id到订单表查询订单信息
        Example example1 = new Example(Orders.class);
        Example.Criteria criteria1 = example1.createCriteria();
        criteria1.andEqualTo("userId",user.getUserId());

        List<Orders> ordersList = orderDAO.selectByExample(example1);
        //3.将查询到的订单集合设置到user中
        user.setOrdersList(ordersList);


        System.out.println(user);
    }

}

 

 

4.在User.java中的Id上加上@Id注解。

package com.qfedu.tkmapperdemo.beans;

import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "User对象",description = "买家信息")
@Table(name = "users")
public class User {

    @Id
private Integer userId;
    private String username;
    private String password;
    private String nickname;
    private String realname;
    private String userImg;
    private String userMobile;
    private String userEmail;
    private String userSex;
    private Date userBirth;
    private Date userRegtime;
    private Date userModtime;

    private List<Orders> ordersList;

}

 

 
测试:

 

 

 

 

方法二:

 
5.创建UserMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qfedu.tkmapperdemo.dao.UserDAO">

<resultMap id="userMap" type="User">
<id column="user_id" property="userId"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="nickname" property="nickname"/>
<result column="realname" property="realname"/>
<result column="user_img" property="userImg"/>
<result column="user_mobile" property="userMobile"/>
<result column="user_email" property="userEmail"/>
<result column="user_sex" property="userSex"/>
<result column="user_birth" property="userBirth"/>
<result column="user_regtime" property="userRegtime"/>
<result column="user_modtime" property="userModtime"/>
<collection property="ordersList" ofType="Orders">
<result column="order_id" property="orderId"/>
<result column="receiver_name" property="receiverName"/>
<result column="receiver_mobile" property="receiverMobile"/>
<result column="receiver_address" property="receiverAddress"/>
</collection>
</resultMap>

<select id="selectByUsername" parameterType="String" resultMap="userMap">
select
u.user_id,
u.username,
u.password,
u.nickname,
u.realname,
u.user_img,
u.user_mobile,
u.user_email,
u.user_sex,
u.user_birth,
u.user_regtime,
u.user_modtime,

o.order_id,
o.receiver_name,
o.receiver_mobile,
o.receiver_address
from users u inner join orders o
on u.user_id = o.user_id
where u.username = #{username}
</select>

</mapper>
 

 

6.修改UserDAOTest.java:

package com.qfedu.tkmapperdemo.dao;

import com.qfedu.tkmapperdemo.TkmapperDemoApplication;
import com.qfedu.tkmapperdemo.beans.Orders;
import com.qfedu.tkmapperdemo.beans.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = TkmapperDemoApplication.class)
public class UserDAOTest {
    @Autowired
    private UserDAO userDAO;
    @Autowired
    private OrderDAO orderDAO;

    @Test
    public void testSelect(){
//        //查询用户的同时查询订单
//        Example example = new Example(User.class);
//        Example.Criteria criteria = example.createCriteria();
//        criteria.andEqualTo("username","zhangsan");
//
//        //根据用户名查询用户
//        //1.先根据用户名查询用户信息
//        List<User> users = userDAO.selectByExample(example);
//        User user = users.get(0);
//
//        //2.再根据用户id到订单表查询订单信息
//        Example example1 = new Example(Orders.class);
//        Example.Criteria criteria1 = example1.createCriteria();
//        criteria1.andEqualTo("userId",user.getUserId());
//
//        List<Orders> ordersList = orderDAO.selectByExample(example1);
//        //3.将查询到的订单集合设置到user中
//        user.setOrdersList(ordersList);
//
//
//        System.out.println(user);

        User user = userDAO.selectByUsername("zhangsan");
        System.out.println(user);

    }

}

 

 

 

 

 
 
 
 
posted @ 2022-06-23 00:04  临易  阅读(55)  评论(0编辑  收藏  举报