mybatis实战:三、mybatis多表查询的映射

news2024/12/24 2:40:27

依照上一期的继续


1.UserMapper.xml

除了直接对应基本数据类类型、表的实体类,还可能用到多表查询。

<select id="selectRolesByUserId" resultType="tk.mybatis.simple.model.SysRole">
    select r.id, r.role_name roleName, r.enabled, r.create_by createBy , r.create_time createTime,
        u.user_name as "user.userName",
        u.user_email as "user.userEmail"
        from sys_user u
    inner join sys_user_role ur on u.id = ur.user_id
    inner join sys_role r on ur.role_id = r.id
    where u.id = #{userid}
</select>
这里可以看到映射的不仅是两个类,那如何解决呢?

(1) 新创一个类继承对应的实体类,增加要对应的属性

package tk.mybatis.simple.model;

public class SysRoleExtend extends SysRole {
    private String userName;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

记得将resultType修改!为继承的,这里只加了username(为了举例),额外需要什么再加。

将resultType 设置为扩展属性后的 SysRoleExtend 对象,通过这种方式来接收多余的值。这种方式比较适合在需要少量额外宇段时使用,但是如果需要其他表中大量列的值时,
这种方式就不适用了,因为我们不能将一个类的属性都照搬到另一 个类中

(2)原有类基础上加对应的User类(推荐)

package tk.mybatis.simple.model;

import lombok.Data;

import java.util.Date;

@Data
public class SysRole {
    private Long id;
    private String roleName;
    private Date createTime;
    private Long createBy;
    private int enabled;
    private SysUser user;
}
直接在 SysRole 中增加 SysUser 对象 字段名为 user ,增加这个字段后,修改 XML 中的 selectRolesByUserId 方法。

2.UserMapper

增加

List<SysRole> selectRolesByUserId(Long userid);

3.UserMapperTest

package tk.mybatis.simple.mapper;

import org.apache.ibatis.session.SqlSession;
import org.junit.Assert;
import org.junit.Test;
import tk.mybatis.simple.model.SysRole;

import java.util.List;

public class UserMapperTest extends BaseMapperTest{
    @Test
    public void testSelectRolesByUserid() {
        SqlSession sqlSession = getSqlSession();
        try {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<SysRole> roleList = userMapper.selectRolesByUserId((long) 1);
            Assert.assertNotNull(roleList);
            Assert.assertTrue(roleList.size() > 0);
        } finally {
            sqlSession.close();
        }
    }
}

5.运行结果

6.遇到的问题 

之前有一个插入没有成功,导致没有一一映射,就会抛出异常,查询到的结果是null。

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

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

相关文章

一篇个人陈述应该包括这三个内容

大家好呀&#xff0c;申请季正如火如荼地进行着&#xff0c;不知道大家都忙碌得怎么样了呢&#xff1f;今天我们来聊聊个人陈述Personal statement,的撰写&#xff0c;包括一篇个人陈述应该包括哪些部分。 申请时&#xff0c;除了学习成绩等“硬背景”&#xff0c;个人陈述(PS…

五款朴实无华却又能极大提升办公效率的软件

最近后台收到好多小伙伴的私信&#xff0c;今天继续推荐五款小工具&#xff0c;都是免费使用的&#xff0c;大家可以去试试看。 1.光追动画制作——Luxion KeyShot Luxion KeyShot是一款互动性的光线追踪与全域光渲染3D渲染与动画制作软件&#xff0c;内置丰富多样的材质&…

Redis使用基础教程

本篇文章转载自&#xff1a;通俗易懂的Redis数据结构基础教程_Java程序员-张凯的博客-CSDN博客 Redis有5个基本数据结构&#xff0c;string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构&#xff0c;把这5个数据结构都吃透了&#xff0c;你…

Spring Security-全面详解(学习总结---从入门到深化)

目录 Spring Security介绍 Spring Security认证_项目搭建 Spring Security认证_内存认证 Spring Security认证_UserDetailsService Spring Security认证_数据库认证 Spring Security认证_PasswordEncoder Spring Security认证_自定义登录页面 Spring Security认证_会…

package-info.java

package-info.java 文件估计大家见过但是自己却很少去创建和使用它、因为对于一般应用来说可能真的太少见了。 它的作用主要是三个 描述包使用注解修饰包、达到修饰该包下的类声明包中使用的类和常量(这个比较少用) 描述包 package-info.java 文件 /*** 我是描述信息*/ pa…

如何用蓝牙实现无线定位(三)--本地定位显示

1. 被定位目标 本项目设计有两个定位装置&#xff0c;一个用于固定目标&#xff0c;一个用于可移动设备。在定位系统的帮助下&#xff0c;我们可以操作可移动设备向固定目标移动。假设这是一个救援场景的话&#xff0c;我们就可以把固定的目标看作等待救援的人或物&#xff0c;…

【使用 BERT 的问答系统】第 2 章 :用于自然语言处理的神经网络

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

大数据开发之词频统计传参打包成jar包发送到Hadoop运行并创建可执行文件方便运行

文章目录添加spark的jar包main传参调试打包成jar包发送到Hadoop运行使用脚本运行参考添加spark的jar包 点击Project Structure Global Libararies中 点击 选择java 然后选择spark文件里的jars下所有的jar包 然后点击ok即可。 main传参调试 首先给出词频统计代码 //包 imp…

OpenCV图像处理——光流估计

总目录 图像处理总目录←点击这里 二十二、光流估计 22.1、原理 光流 是空间运动物体在观测成像平面上的像素运动的“瞬时速度”&#xff0c;根据各个像素点的速度矢量特征&#xff0c;可以对图像进行动态分析&#xff0c;例如目标跟踪。 亮度恒定&#xff1a;同一点随着时…

HTML5期末考核大作业——学生网页设计作业源码HTML+CSS+JavaScript 中华美德6页面带音乐文化

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…

LeetCode HOT 100 —— 76 .最小覆盖子串

题目 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串"" 。 思路 **滑动窗口&#xff1a;**题目要求返回字符串s中包含字符串t的全部字符的最小窗口&#xff0c;即包含t的…

世界杯的那些二三事

文章目录 &#x1f525;关于世界杯 &#x1f525;关于2022卡塔尔世界杯 &#x1f525;我与世界杯 ⚽分享一颗足球 ⚽实现效果 &#x1f525;关于世界杯 大力神杯 国际足联世界杯&#xff08;FIFA World Cup&#xff09;&#xff0c;简称“世界杯”&#xff0c;是由全世界…

【自然语言处理(NLP)】基于Bi-DAF的机器阅读理解

【自然语言处理&#xff08;NLP&#xff09;】基于Bi-DAF的机器阅读理解 作者简介&#xff1a;在校大学生一枚&#xff0c;华为云享专家&#xff0c;阿里云专家博主&#xff0c;腾云先锋&#xff08;TDP&#xff09;成员&#xff0c;云曦智划项目总负责人&#xff0c;全国高等学…

java+jsp基于ssm汽车配件管理系统-计算机毕业设计

项目介绍 本汽车配件管理系统是针对目前网上车企的实际需求&#xff0c;从实际工作出发&#xff0c;对过去的汽车配件管理系统存在的问题进行分析&#xff0c;结合计算机系统的结构、概念、模型、原理、方法&#xff0c;在计算机各种优势的情况下&#xff0c;采用目前最流行的…

利用Python生成随机密码,灰常简单,小伙伴可以试试哟

知识点 文件读写 基础语法 字符串处理 字符拼接 Python合集视频 【整整800集】Python爬虫项目零基础入门合集&#xff0c;细狗都学会了&#xff0c;你还不会&#xff1f;代码解析 导入模块 import platform import string import random将string的几大字符串拼接在一起&…

Spring Boot实现任意位置的properties及yml文件内容配置与获取

〇、参考资料 1、Spring Boot 中文乱码问题解决方案汇总 https://blog.51cto.com/u_15236724/5372824 2、spring boot读取自定义配置properties文件★ https://www.yisu.com/zixun/366877.html 3、spring boot通过配置工厂类&#xff0c;实现读取指定位置的yml文件★ https://b…

TensorFlow之文本分类算法-5

1 前言 2 收集数据 3 探索数据 4 选择模型 5 准备数据 6 模型-构建训练评估 构建输出层 构建n-gram模型 根据前面章节的描述&#xff0c;n-gram模型是独立地处理分词&#xff0c;与原文中的单词顺序不相关。简单的多层神经感知&#xff08;逻辑回归&#xff09;、梯度推…

SCP命令在不同远程服务器之间发送文件(指定端口)

最近想把数据集放在另一个服务器上&#xff0c;但是如果先下载到本地然后再上传过去&#xff0c;则需要浪费好久时间。 特总结下如何快捷的通过命令完成不同远程服务器之间的文件传输&#xff0c;以及遇到的问题。 SCP命令 Linux scp 命令用于 Linux 之间复制文件和目录。1 s…

第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海),签到题6题

文章目录E.Strange IntegersD.Strange FractionsG.Edge GroupsI.Steadily Growing SteamH.Life is a GameK.Circle of Life补题链接&#xff1a;https://codeforces.com/gym/103446 E.Strange Integers E. Strange Integers time limit per test1 second memory limit per te…

搭建Docker+SRS服务器实现推流拉流的效果

最初的一个想法&#xff0c;是针对当前的网络电视去的&#xff0c;很多网络电视买回家&#xff0c;还要充很多会员&#xff0c;甚至跌入连环坑。我想给妈妈买一台电视&#xff0c;想把我自己收集的电影电视剧做成一个影视库&#xff0c;通过搭建家庭影院服务器&#xff0c;然后…