MyBatis -- 多表查询

news2024/11/25 7:09:50

MyBatis -- 多表查询

  • 一、准备工作
  • 二、多表查询
    • 属性名与字段名不匹配

一、准备工作

博客系统场景。

创建库、表:

-- 创建数据库
drop database if exists mycnblog;
create database mycnblog DEFAULT CHARACTER SET utf8mb4;

-- 使用数据数据
use mycnblog;

-- 创建表[用户表]
drop table if exists  userinfo;
create table userinfo(
    id int primary key auto_increment,
    username varchar(100) not null,
    password varchar(32) not null,
    photo varchar(500) default '',
    createtime datetime default now(),
    updatetime datetime default now(),
    `state` int default 1
) default charset 'utf8mb4';

-- 创建文章表
drop table if exists  articleinfo;
create table articleinfo(
    id int primary key auto_increment,
    title varchar(100) not null,
    content text not null,
    createtime datetime default now(),
    updatetime datetime default now(),
    uid int not null,
    rcount int not null default 1,
    `state` int default 1
)default charset 'utf8mb4';

用户表实体类:

package com.example.demo.model;

import lombok.Data;

import java.util.Date;

/**
 * 普通的实体类,用于 Mybatis 做数据库表(userinfo表)的映射
 */
@Data
public class UserInfo {
    private int id;
    private String name;
    private String password;
    private String photo;
    private Date createtime;
    private Date updatetime;
    private int state;
}

文章表实体类:

package com.example.demo.model;

import lombok.Data;

import java.util.Date;

/**
 * 文章表的实体类
 */
@Data
public class ArticleInfo {
    private int id;
    private String title;
    private String content;
    private Date createtime;
    private Date updatetime;
    private int uid;
    private int rcount; // 访问量
    private int state; // 状态(预览字段)
    private String username; // 文章作者名
    //..
}
  • 创建接口 UserMapper 与其对应的 UserMapper.xml 文件
  • 创建接口 ArticleInfoMapper 与其对应的 ArticleMapper.xml 文件

二、多表查询

文章表 articleinfo 的 uid 字段是一个外键,关联到 userinfo 表中的信息了。
(查询文章时也需要显示用户信息)

在这里插入图片描述

在这里插入图片描述

ArticleInfoMapper 接口中创建 getAll 方法:public List<ArticleInfo> getAll();

单元测试:

package com.example.demo.mapper;

import com.example.demo.model.ArticleInfo;
import com.example.demo.model.UserInfo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest // 当前测试的上下文环境为 springboot
class ArticleInfoMapperTest {

    @Autowired
    private ArticleInfoMapper articleInfoMapper;
    
    @Test
    void getAll() {
        List<ArticleInfo> list = articleInfoMapper.getAll();
        for (ArticleInfo item:list){
            System.out.println(item);
        }
    }
}

这样就能成功查询出所有文章 (带有文章作者名信息) !
想查询用户表其他字段的话,按照相同的方式加上就行了 ~

属性名与字段名不匹配

在这里插入图片描述

我们把 username 修改为 name,此时实体类属性名就与数据库表字段名不匹配了。

方案一:使用 resultMap

博客链接:https://blog.csdn.net/yyhgo_/article/details/128713697?spm=1001.2014.3001.5501

方案二:sql 中起别名

在这里插入图片描述

单元测试:
在这里插入图片描述
同样能够查询出 ~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序样式和组件基础

小程序样式和组件基础小程序样式样式wxss简介响应式单位rpx其它css单位支持的单位内置组件简介image组件-基础组件介绍常用属性示例image组件-懒加载与基础库版本用法swiper组件组件介绍常用属性示例navigator组件-基础组件介绍常用属性示例navigator组件-页面栈页面栈返回按钮…

常用windows自带程序对应的命令

敲winr键&#xff0c;调出 运行 框&#xff1b; 输入命令回车&#xff0c;打开对应程序&#xff1b; 输入cmd&#xff0c;调出命令行窗口&#xff1b; gpedit&#xff0c;组策略编辑器&#xff0c; 有的电脑没有组策略编辑器&#xff1b; 资源管理器&#xff1b; dvdplay&…

【BP靶场portswigger-客户端15】基于DOM的漏洞-7个实验(全)

前言&#xff1a; 介绍&#xff1a; 博主&#xff1a;网络安全领域狂热爱好者&#xff08;承诺在CSDN永久无偿分享文章&#xff09;。 殊荣&#xff1a;CSDN网络安全领域优质创作者&#xff0c;2022年双十一业务安全保卫战-某厂第一名&#xff0c;某厂特邀数字业务安全研究员&…

使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)02 人脸识别 上

文章目录1 数据集描述2 GPU设置3 设置Dataset类4 设置辨别器类5 辅助函数与辅助类1 数据集描述 此项目使用的是著名的celebA&#xff08;CelebFaces Attribute&#xff09;数据集。其包含10,177个名人身份的202,599张人脸图片&#xff0c;每张图片都做好了特征标记&#xff0c…

【数据结构】顺序表的原理及实现

1.什么是顺序表 顺序表是用一段物理地址连续的存储单元进行存储元素的线性结构&#xff0c;通常是以数组进行存储。通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。 2.顺序表的实现 判断顺序表是否为空表public boolean isEmpty()判断顺序表是否满publi…

复旦MBA海外短期课程 | 善用ESG金融,共创可持续未来

2022年&#xff0c;世界在颠簸中向前迈进&#xff1a;全球气候变化、能源危机、大国博弈……在这样的背景下&#xff0c;近年来备受瞩目的ESG价值、“双碳”目标、可持续发展、责任投资等话题愈发成为焦点。今年复旦MBA培养体系全面升级之际&#xff0c;在新增的“未来发展模块…

Pandas CSV 文件

Pandas CSV 文件CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔值&#xff0c;有时也称为字符分隔值&#xff0c;因为分隔字符也可以不是逗号&#xff09;&#xff0c;其文件以纯文本形式存储表格数据&#xff08;数字和文本&#xff09;。CSV 是一种通用的、相对…

【沐风老师】3dMax一键生成中央空调排风口插件使用教程

3dMax一键创建中央空调排风口插件&#xff0c;快捷生成矩形或菱形两种形状的排风口。 【版本要求】 不确定。3dmax2020环境测试可用&#xff0c;其他版本自行测试&#xff0c;欢迎反馈测试结果。 【安装方法】 方法一&#xff1a;拖动插件文件到3dMax窗口打开。 方法二&#x…

ESP32相关知识点

1.vs code代码回退到上一步: 方法1:在Windows中可以使用快捷键“Alt←”实现 方法2:利用vs code界面操作&#xff0c;Go-Back 2.设置vs code下ESP-IDF Monitor Device的波特率。 步骤Manage-New Code update available------Command Palette 弹出对话框 搜索或选择:ESP-IDF:SD…

基于Androidstudio的打车拼车app

需求信息&#xff1a; 客户端&#xff1a; 1&#xff1a;注册和登录:用户信息录入与登录。 2&#xff1a;修改密码:用户忘记密码可在此处找回。 3&#xff1a;地图功能:提供城市地图&#xff0c;能被自由移动、放大和缩小。 4&#xff1a;自身定位:获取用户位置信息&#xff0c…

STM-PWM采集

输入捕获分为两种方式进行捕获 1、pwm输入捕获:精度高&#xff0c;每个定时器只能采集一个pwm&#xff0c;且只能使用通道1、通道2。 2、通用输入捕获&#xff1a;相对比较精确&#xff0c;每个定时器可以采集多个pwm&#xff0c; 1、pwm输入捕获使用教程如下&#xff1a; 参…

Vue 快速入门(一)

1、介绍 Vue(读音/vju/&#xff0c;类似view)&#xff0c;是中国的大神尤雨溪开发的&#xff0c;为数不多的国人开发的世界顶级开源软件。是一套用于构建用户界面的渐进式框架&#xff0c;Vue 被设计为可以自底向上逐层应用。MVVM响应式编程模型&#xff0c;避免直接操作DOM&am…

虹科分享 | HPC调度解决方案:HK-Adaptive在数字卫星图像领域的应用

2011年3月11日&#xff0c;日本海岸附近发生了9.0级地震。这次地震引发了强大的海啸&#xff0c;并向内陆传播了6英里&#xff0c;不仅使地球的轴心偏移了大约10到25厘米&#xff0c;还导致福岛核电站发生核紧急情况。 为了减少这场灾害的损失&#xff0c;不同国家的不同组织以…

浅谈虚拟电厂与企业微电网数字化建设

安科瑞 华楠摘要&#xff1a;2023年1月8日&#xff0c;微信公众号鱼眼看电改(作者俞庆)发表了文章《虚拟电厂与负荷侧数字化》&#xff0c;原文如下&#xff1a;“虚拟电厂是电力数字化的一个应用方向&#xff0c;准确的说&#xff0c;是负荷侧数字化的发展方向。所以负荷侧数字…

NetSuite Classifications的注意事项

Classifications&#xff0c;我们将之称为“分析维度”吧&#xff0c;这样更能体现其真正的用途。在NetSuite中标准的分析维度是“LDC&#xff08;Location、Department、Class&#xff09;”&#xff0c;这是NetSuite的特色。有些注意事项我们今天分享下。 1. LDC的用途区别 …

Django REST framework--Swagger API文档生成器

Django REST framework--Swagger API文档生成器swagger在线接口文档drf-yasg安装与配置安装drf-yasg配置drf-yasg互动模式文档模式定制化用法&#xff08;viewset模式&#xff09;修饰视图装饰器api_view修饰视图集swagger在线接口文档 目前为止&#xff0c;接口开发到了一定的…

Spring AOP【统一异常处理与统一数据格式封装】

Spring AOP【统一异常处理与统一格式封装】&#x1f34e;一.统一异常处理&#x1f352;1.1 实现一个异常方法&#x1f352;1.2 统一处理异常代码的实现&#x1f352;1.3 统一处理所有异常&#x1f34e;二.统一格式封装&#x1f352;2.1 实现一个返回数据方法&#x1f352;2.2 统…

回收租赁商城系统功能拆解09讲-会员管理

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格&#xff0c;后台调整最终回收价&#xff0c;用户同意回收后系统即刻放款&#xff0c;用户微信零…

echarts省市区id(区域编码)实现地图下钻点击(data赋值自定义属性值,geojson信息获取)

致新的一年&#xff1a;不知不觉已经是2023年&#xff0c;祝新的一年大展宏图&#xff08;兔&#xff09;&#xff0c;前途&#xff08;兔&#xff09;似锦&#xff0c;今年梦想实现&#xff01; 正文&#xff1a; 接触echarts也有很长一段时间了&#xff0c;最近有个很常见的…

UE4 反射 学习笔记

想让类具有反射机制&#xff0c;必须要有这四个要素&#xff1a; 1、generated.h文件 2、UCLASS()宏 3、继承自UObject 4、GENERATED_BODY() void ABlurCharacter::BeginPlay() {Super::BeginPlay();ABlurCharacter *BlurCharacter NewObject<ABlurCharacter>();UCl…