我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MybatisPlus如何实现对象嵌套关联查询一对多List集合查询

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MybatisPlus如何实现对象嵌套关联查询一对多List集合查询

这篇文章主要讲解了“MybatisPlus如何实现对象嵌套关联查询一对多List集合查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MybatisPlus如何实现对象嵌套关联查询一对多List集合查询”吧!

对象嵌套关联查询一对多List集合查询

mybatis嵌套关联查询如下

由于我的是一对集合查询,所以我有两个类。

@Data@TableName("tb_user")public class User {    @TableId(type= IdType.INPUT)    private String id;    @TableField("user_name")    private String username;    private String password;    private String name;    private String email;    private int age;    private ArrayList<Authority> list;}

权限类

@Data@TableNamepublic class Authority {    @TableId(type = IdType.INPUT)    @TableField("aid")    private int id;    @TableId("aname")    private String name;}

测试类

 @Test    public void ManyToMany(){        User user = userMapper.selectAuthorityById(1);        ArrayList <Authority> list = user.getList();        System.out.println(user);        for (Authority authority : list) {            System.out.println("所对应权限为"+authority.getName());        }    }

springboot项目的依赖

       <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter</artifactId>    </dependency>        <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>5.1.26</version>    </dependency>        <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>        <optional>true</optional>    </dependency>        <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-test</artifactId>        <scope>test</scope>    </dependency>       <!--mybatis plus 起步依赖-->        <dependency>        <groupId>com.baomidou</groupId>        <artifactId>mybatis-plus-boot-starter</artifactId>        <version>3.4.0</version>    </dependency>

这下面就是我xml文件里面怎么写的嵌套查询语句

<mapper namespace="com.itheima.mybatisplus.mapper.UserMapper">    <!--返回的对象为authority-->    <resultMap id="authority" type="com.itheima.mybatisplus.domain.User">        <id column="id" property="id"/>        <id column="password" property="password"/>        <id column="age" property="age"/>        <id column="email" property="email"/>        <id column="name" property="name"/>        <id column="user_name" property="username"/>      <collection property="list"                  ofType="com.itheima.mybatisplus.domain.Authority">          <id property="id" column="aid"/>          <id property="name" column="aname"/>      </collection>    <select id="selectAuthorityById" parameterType="int" resultMap="authority">       SELECT * FROM         authority a,tb_user t,user_authority ua         WHERE a.aid=ua.authority_id         AND t.id=ua.user_id         AND t.id=#{id}    </select>

数据库的配置我就不放了,直接编写就可以了,看会下面这个xml配置就可以了 

一对多查询(经典案例)

条件

查询班级表 返回所有学生信息  (一对多问题)

数据库

班级class_info

MybatisPlus如何实现对象嵌套关联查询一对多List集合查询

学生student

MybatisPlus如何实现对象嵌套关联查询一对多List集合查询

代码实现

<!--        多对一  或者 一对一   --><!--        <association property=""--><!--        一对多 返回集合--><!- -  <collection  property=""- ->

实体类ClassInfo.java

@Datapublic class ClassInfo {     private Long id;    private String name;    private String nameTest;     private List<Student> studentList;}

ClassInfoMapper.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层某个接口的包的全名称--><mapper namespace="com.example.demo.mapper.ClassInfoMapper">     <!--    查询班级 返回所有学生的信息   一对多-->     <!--    自定义映射规则-->    <resultMap id="OneToMany" type="com.qcby.zsgc.entity.ClassInfo">        <result column="name" jdbcType="VARCHAR" property="nameTest" />        <collection  column="{id1=id,name=name}"                     property="studentList"                     select="com.example.demo.mapper.StudentMapper.listByClassInfoId">                 </collection>    </resultMap>     <select id="listAllWithStudent" resultMap="OneToMany">        select * from class_info    </select>

关联StudentMapper.xml中的子查询

 <select id="listByClassInfoId" resultType="com.example.demo.entity.Student">        SELECT           *        FROM            student s        where class_info_id = #{id1} or name = #{name}    </select>

ClassInfoMapper.java

public interface ClassInfoMapper extends BaseMapper<ClassInfo> {      IPage<ClassInfo> listAllWithStudent(IPage<ClassInfo> page); }

ClassInfoService.java

public interface ClassInfoService extends IService<ClassInfo> {     IPage<ClassInfo> listAllWithStudent(IPage<ClassInfo> page); }

ClassInfoServiceImpl.java

@Servicepublic class ClassInfoServiceImpl extends ServiceImpl<ClassInfoMapper, ClassInfo> implements ClassInfoService {    @Autowired    private StudentService studentService;    @Override    public IPage<ClassInfo> listAllWithStudent(IPage<ClassInfo> page) {        return this.baseMapper.listAllWithStudent(page);    }}

ClassInfoController.java

@Controller@RequestMapping("classInfo")public class ClassInfoController {     @Autowired    private ClassInfoService classInfoService;     @RequestMapping("listAllWithStudent")    @ResponseBody    public IPage<ClassInfo> listAllWithStudent(Integer pageNo,Integer pageSize){        Page<ClassInfo> page = new Page<>(pageNo,pageSize);        return classInfoService.listAllWithStudent(page);    } }

感谢各位的阅读,以上就是“MybatisPlus如何实现对象嵌套关联查询一对多List集合查询”的内容了,经过本文的学习后,相信大家对MybatisPlus如何实现对象嵌套关联查询一对多List集合查询这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MybatisPlus如何实现对象嵌套关联查询一对多List集合查询

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MybatisPlus如何实现对象嵌套关联查询一对多List集合查询

这篇文章主要讲解了“MybatisPlus如何实现对象嵌套关联查询一对多List集合查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MybatisPlus如何实现对象嵌套关联查询一对多Li
2023-06-30

mybatis一对多嵌套查询怎么实现

本文小编为大家详细介绍“mybatis一对多嵌套查询怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis一对多嵌套查询怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。mybatis一对多嵌
2023-07-05

Mybatis怎么实现一对一、一对多关联查询

今天小编给大家分享一下Mybatis怎么实现一对一、一对多关联查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Mybati
2023-07-05

使用Mybatis 如何实现多对一或一对多的关联查询

使用Mybatis 如何实现多对一或一对多的关联查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先 数据库量表之间字段关系(没有主外键)studentmajor表的i
2023-05-31

如何使用mongoose实现多集合关联查询

这篇文章主要介绍了如何使用mongoose实现多集合关联查询,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在使用node开发后端项目的时候,通常会选择mongodb作为数据库
2023-06-29

怎么在mybatis中实现多对一关联查询

怎么在mybatis中实现多对一关联查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。第一种关联方式1.修改实体类Student,追加关联属性,用于封装关联的数据修改完以后
2023-06-15

Mybatis实现一对一、一对多关联查询的方法(示例详解)

这篇文章主要介绍了Mybatis实现一对一、一对多关联查询的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-14

利用mybatis如何实现一个一对多查询功能

利用mybatis如何实现一个一对多查询功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.需求分析:在开发中会遇到这样一个问题,查询订单信息,级联查询出用户信息和订单明
2023-05-31

MySQL 多表关联一对多查询实现取最新一条数据的方法示例

本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 遇到的问题 多表关联一对多查询取最新的一条数据,数据出现重复由于历史原因,表结构设计不合
2022-05-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录