ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-06-23 00:35:43  阅读:111  来源: 互联网

标签:tkmapperdemo 14 private user import 千峰 com Example springboot


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);

    }

}

 

 

 

 

       

标签:tkmapperdemo,14,private,user,import,千峰,com,Example,springboot
来源: https://www.cnblogs.com/lysboke/p/16403710.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有