1天搞定SpringBoot+Vue全栈开发 (4)多表查询及分页查询

1.多表查询

在多表查询中,mybatis和mybatis plus无区别

User:

package com.example.mpdemo.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;import java.util.List;@TableName("user")
public class User{@TableId(type= IdType.AUTO)private int id;private String username;private String password;private String birthday;//描述用户的所有订单@TableField(exist = false)private  List<Order> orders;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}public List<Order> getOrders() {return orders;}public void setOrders(List<Order> orders) {this.orders = orders;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", birthday='" + birthday + '\'' +", orders=" + orders +'}';}
}

UserController:

package com.example.mpdemo.controller;import com.alibaba.druid.pool.ha.selector.StickyDataSourceHolder;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.mpdemo.entity.User;
import com.example.mpdemo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class UsrController {@AutowiredUserMapper userMapper;@GetMapping("/user/findAll")public List<User> find(){return userMapper.selectAllUserAndOrders();}}

UserMapper:

package com.example.mpdemo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mpdemo.entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;import java.util.List;@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {//查询用户,根据用户id查询信息 select * from user where id=@Select("select * from user where id=#{id}")User selectById(int id);//查询用户及其所有订单@Select("select * from user")@Results({@Result(column = "id",property = "id"),@Result(column = "username",property = "username"),@Result(column = "password",property = "password"),@Result(column = "birthday",property = "birthday"),@Result(column = "id",property = "orders",javaType = List.class,//many:一个用户可以有多个订单many=@Many(select = "com.example.mpdemo.mapper.OrderMapper.selectByUid" ))})List<User> selectAllUserAndOrders();
}

Order:

package com.example.mpdemo.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;import java.util.List;
@TableName("orderss")
public class Order {@TableId(type= IdType.AUTO)private int id;private String orderTime;private int total;private int uid;//描述用户的所有订单 select id,username,password,orderss from user@TableField(exist = false)private User user;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getOrderTime() {return orderTime;}public void setOrderTime(String orderTime) {this.orderTime = orderTime;}public int getTotal() {return total;}public void setTotal(int total) {this.total = total;}public int getUid() {return uid;}public void setUid(int uid) {this.uid = uid;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}@Overridepublic String toString() {return "Order{" +"id=" + id +", orderTime='" + orderTime + '\'' +", total='" + total + '\'' +", uid=" + uid +", user=" + user +'}';}
}

OrderController:

package com.example.mpdemo.controller;import com.example.mpdemo.mapper.OrderMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.apache.ibatis.annotations.Mapper;import javax.annotation.Resource;
import java.util.List;@RestController
public class OrderController {@Autowiredprivate OrderMapper orderMapper;@GetMapping("/order/findAll")public List findAll(){List orders=orderMapper.selectAllUserAndOrders();return orders;}
}

OrderMapper:

package com.example.mpdemo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mpdemo.entity.Order;
import com.example.mpdemo.entity.User;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface OrderMapper extends BaseMapper<Order> {@Select("select * from orderss where uid=#{uid}")List<Order> selectByUid(int uid);//查询所有订单,同时查询订单的用户@Select("select * from orderss")@Results({@Result(column = "id",property = "id"),@Result(column = "orderTime",property = "orderTime"),@Result(column = "total",property = "total"),@Result(column = "uid",property = "user",javaType = User.class,//一个订单只能被一个用户拥有one=@One(select = "com.example.mpdemo.mapper.UserMapper.selectById" ))})List<User> selectAllUserAndOrders();
}

注意!!!!一直查不出order可以把表名字改成orderss。(因为order是sql的关键字)

测试:

2.条件查询

UserConrtroller中加入:

//条件查询@GetMapping("/user/find")public List<User> findByCond(){QueryWrapper<User> queryWrapper=new QueryWrapper();queryWrapper.eq("username","zhangsan");return userMapper.selectList(queryWrapper);}

测试:

3.分页查询 (通过拦截器实现)

 MyBatisPlusConfig:

package com.example.mpdemo.config;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MyBatisPlusConfig {@Beanpublic MybatisPlusInterceptor paginationInterceptor(){MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();//分页拦截器PaginationInnerInterceptor paginationInterceptor=new PaginationInnerInterceptor(DbType.MYSQL);//分页拦截器interceptor.addInnerInterceptor(paginationInterceptor);return interceptor;}}

测试:(从0开始,查两个记录)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671657.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

36.Docker-Dockerfile自定义镜像

镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 镜像是分层机构&#xff0c;每一层都是一个layer BaseImage层&#xff1a;包含基本的系统函数库、环境变量、文件系统 EntryPoint:入口&#xff0c;是镜像中应用启动的命令 其他&#xff1a;在…

<网络安全>《76 概念讲解<第十课 物联网常用协议-网络层协议>》

协议简称全称名称内容说明IPv4互联网通信协议第四版IPv4是互联网的核心IPv6互联网协议第6版TCPTransmission Control Protocol传输控制协议TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务…

数组练习题

1.打印X图案 if ((i j) ||( i j n - 1)) 循环打印了一个行和列相同的数组 当ij的时候 打印正斜线 ijn-1的时候打印反斜线 int main() {int n 0;while (scanf("%d", &n) ! EOF){for (int i 0; i < n; i) //外循环为行{for (int j 0; j < n; j) …

第三篇、利用潜空间生成超稳定动画

1、使用temporal-kit&#xff0c;生成拼接的图片 sides填写3&#xff0c;Height Resolution要填写原视频高度 * sides ,这里也就是三倍 因为原视频动作很快&#xff0c;frames per keyframe填写了2 发现在temp1目录的Input目录下生成了 3* 3的拼接图片 2、到图生图界面&#…

自学Redis7入门篇一

自学Redis7入门篇一 Redis概述一、Redis是什么&#xff1f;二、Redis能干什么&#xff1f;三、去哪里下四、Redis安装配置五、Redis 10数据类型1.字符串(String)2.列表(List)3.哈希表(Hash)4.集合(Set)5.有序集合(ZSet)6.地理空间(GEO)7.基数统计(HyperLogLog)8.位图(bitmap)9.…

vue2人力资源项目3主页

主页权限验证 前置守卫开启进度条&#xff0c;后置守卫关闭进度条 import router from /router import nProgress from nprogress// 导入进度条&#xff08;模板自带&#xff09; import nprogress/nprogress.css// 导入进度条样式&#xff08;模板自带&#xff09; // 前置守…

CNN笔记详解

CNN(卷积神经网络) 计算机视觉&#xff0c;当你们听到这一概念的是否好奇计算机到底是怎样知道这个图片是什么的呢&#xff1f;为此提出了卷积神经网络&#xff0c;通过卷积神经网络&#xff0c;计算机就可以识别出图片中的特征&#xff0c;从而识别出图片中的物体。看到这里充…

Linux学习笔记(3)---- Debian测试网速指令及查看是否千兆网卡

测试网速指令 在Debian系统中&#xff0c;测网速的指令主要有以下几种方法&#xff1a; 使用speedtest-cli工具&#xff1a; speedtest-cli是一个常用的网络速度测试工具&#xff0c;可以通过命令行进行安装和运行。首先&#xff0c;需要安装speedtest-cli&#xff1a; sud…

保持 Hiti 证卡打印机清洁的重要性和推荐的清洁用品

在证卡印刷业务中&#xff0c;保持印刷设备的清洁至关重要。特别是对于 Hiti 证卡打印机来说&#xff0c;它们是生产高质量证卡的关键工具。保持设备清洁不仅可以保证打印质量和效率&#xff0c;还可以延长其使用寿命。本文将探讨保持 Hiti 证卡打印机清洁卡的重要性&#xff0…

C++构造函数和析构函数的调用顺序

一般情况下&#xff0c;调用析构函数的次序正好与调用构造函数的次序相反&#xff0c;也就是最先被调用的构造函数&#xff0c;其对应的析构函数最后被调用&#xff0c;而最后被调用的构造函数&#xff0c;其对应的析构函数最先被调用。 当然对象的构造函数和析构函数调用时机和…

Llama3 端侧部署:算丰 SG2300x 与爱芯元智 AX650N

美国当地时间4月18日&#xff0c;Meta 开源了 Llama3 大模型&#xff0c;包括一个 8B 模型和一个 70B 模型&#xff0c;在测试基准中&#xff0c;Llama 3 模型的表现相当出色&#xff0c;在实用性和安全性评估中&#xff0c;与那些市面上流行的闭源模型不相上下。 Llama3 性能…

Chrome浏览器安装React工具

一、如果网络能访问Google商店&#xff0c;直接安装官方插件即可 二、网络不能访问Google商店&#xff0c;使用安装包进行安装 1、下载react工具包 链接&#xff1a;https://pan.baidu.com/s/1qAeqxSafOiNV4CG3FVVtTQ 提取码&#xff1a;vgwj 2、chrome浏览器安装react工具…