关于实体类中多层嵌套集合,用mybatis的collection标签可以快速实现

2023-11-18

一,首先分析需求在有三个实体类的情况下,好比user类,Student,YearClass类,结构如下

//最外层类
public class user {
    private String name;
    private String age;

    private List<Student> students;
}

//中间层类
public class Student {

    private String school;

    private String addr;

    private List<YearClass> yearClasses;
}
//最内层类
public class YearClass {
    private String classNo;

    private int stuNum;

}



 由于本人工作经验不多,之前碰到这种情况,我都是用循环逐个赋值,但是这次由于对效率有效求,所以就舍弃之前的循环赋值的方法,就用了mybatis中collection标签进行嵌套赋值,这个方法真的写起来非常简便,比我之前那种笨方法好太多了。

二. XML层大概如下所示


    <resultMap id="BaseResultMap" type="com.java.model.User">
        <result column="NAME" property="name" jdbcType="VARCHAR"/>
        <result column="AGE" property="age" jdbcType="VARCHAR"/>
        <collection property="students" javaType="List" ofType="com.java.model.Student" resultMap="BaseResultMapTwo">

        </collection>
    </resultMap>

    <resultMap id="BaseResultMapTwo" type="com.java.model.Student">
        <result column="SCHOOL" property="school;" jdbcType="VARCHAR"/>
        <result column="addr" property="addr" jdbcType="VARCHAR"/>
        <collection property="yearClasses" javaType="List" ofType="com.java.model.YearClass" resultMap="BaseResultMapThree">

        </collection>
    </resultMap>

    <resultMap id="BaseResultMapThree" type="com.java.model.YearClass">
        <result column="CLASSNO" property="classNo;" jdbcType="VARCHAR"/>
        <result column="STUNUM" property="stuNum" jdbcType="INTEGER"/>
    </resultMap>

这中结构是在xml中将集合中的元素用了collection标签,而且可以多级嵌套(能多少我也不清楚,我最多是三层,更多没试过)

而且这样的话SQL的编写,只需要将字段的值查出来就行,注意名字自定要和resultMap标签中的名字一一对应就行(顺序乱了没关系),这样mybatis会自己帮我们处理结果,而且到MVC层我们就不需要进行逐一赋值了,直接调用mapper层接口就行,会省去很多的麻烦

@PostMapping
    private Object getData() {

        List<User> users = userAllMapper.selectStu();

        return users;
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于实体类中多层嵌套集合,用mybatis的collection标签可以快速实现 的相关文章

  • Hashmap并发问题

    我有一个哈希图 出于速度原因 我希望不需要锁定 假设我不介意过时的数据 同时更新它和访问它会导致任何问题吗 我的访问是获取 而不是迭代 删除是更新的一部分 是的 这会导致重大问题 一个例子是向散列映射添加值时可能发生的情况 这可能会导致表重
  • 使用 Java 在 WebDriver 中按 Ctrl+F5 刷新浏览器

    我已经使用 java 刷新了 WebDriver 中的浏览器 代码如下 driver navigate refresh 如何使用 Java 在 WebDriver 中按 Ctrl F5 来做到这一点 我认为您可以使用 WebDriver 和
  • 如何开始使用 Chainsaw for Log4j?

    我想开始使用 Chainsaw v2 几乎没有关于它的信息 我只找到了this http www velocityreviews com forums t140105 help using chainsaw for log4j html 但
  • java.lang.LinkageError:尝试重复的类定义

    为什么会发生错误以及如何修复它 02 13 02 pool 4 thread 2 WARN Exception in thread pool 4 thread 2 02 13 02 pool 4 thread 2 WARN java lan
  • 正则表达式获取字符串中的第一个数字和其他字符

    我是正则表达式的新手 想知道如何才能只获取字符串中的第一个数字 例如100 2011 10 20 14 28 55 在这种情况下 我希望它返回100 但该数字也可以更短或更长 我在想类似的事情 0 9 但它单独获取每个数字 100 2001
  • 定期更新 SWT 会导致 GUI 冻结

    Problem 当 GUI 字段定期更新时 SWT 会冻结 我想要一个基于 SWT 的 GUI 其中文本字段的值会定期递增 最初我从单独的线程访问 textField 导致抛出异常 线程 Thread 0 org eclipse swt S
  • Java Microsoft Excel API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 当您在数组列表上调用remove(object o)时,它如何比较对象?

    当您在 java 中的数组列表上调用remove object o 时 它如何比较对象以找到要删除的正确对象 它使用指针吗 或者它使用 Comparable 接口来比较对象吗 ArrayList remove 依赖于对象的实现Equal方法
  • 带有 OpenId 提供程序的 Java Spring 安全性

    我有一个 spring MVC 应用程序 另一个客户端应用程序想要使用 open id connect 访问我的 spring 应用程序 如何在服务器端实现开放ID提供商 请帮忙 MITREid 连接 OpenID Connect Java
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 如何将 arraylist 从 servlet 传递到 javascript?

    我通过在属性中设置数组列表并将其转发到 jsp 来从 servlet 传递数组列表 Servlet ArrayList
  • JSch中如何设置文件类型和文件传输模式?

    我使用 Apache Common NetFTPClient并设置了我的ftpClient在上传文件之前使用如下所示的方法 ftpClient setFileType FTP BINARY FILE TYPE ftpClient setFi
  • 如何在Java媒体框架中学习.wav持续时间?

    我正在尝试使用 java 媒体框架将 mov 文件与 wav 文件合并 因此我需要知道它们的持续时间 我怎样才能做到这一点 任何想法 将不胜感激 您可以使用以下方式了解声音文件的持续时间 即 VitalyVal 的第二种方式 import
  • Android Gradle 同步失败:无法解析配置“:classpath”的所有工件

    错误如下 Caused by org gradle api internal artifacts ivyservice DefaultLenientConfiguration ArtifactResolveException Could n
  • 使用 secp256r1 曲线和 SHA256 算法生成 ECDSA 签名 - BouncyCastle

    我正在尝试使用带有 secp256r1 曲线 P256 的 ECDSA 和用于消息哈希的 SHA256 算法生成签名 我也在使用 Bouncy Castle 库 下面的代码 public class MyTest param args pu
  • 如何初始化静态地图?

    你会如何初始化静态Map在Java中 方法一 静态初始化方法二 实例初始化 匿名子类 或者 还有其他方法吗 各自的优点和缺点是什么 这是说明这两种方法的示例 import java util HashMap import java util
  • 为什么这个私人浮动字段变为零?

    我有一些奇怪的行为 我很难向自己解释 称为 textureScale 的浮点字段变为零 如果某些代码正在更改该值 则可以解释这一点 然而 我希望能够通过将其设置为 私有最终浮点 来导致构建失败 或者至少是运行时异常 那么无论更改该值都将失败
  • 摩尔斯电码 至 英语

    我现在的问题是让 摩尔斯电码转英语 正常工作 将英语转换为莫尔斯电码的第一部分工作正常 我知道以前已经有人问过这个问题 但我不知道我做错了什么 我知道我需要在某个地方进行拆分 但我只是不确定将其放在代码中的何处 现在 莫尔斯电码到英语的部分
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java、Spring、Hibernate找不到org.springframework.orm.hibernate3.LocalSessionFactoryBean

    我正在尝试制作 spring hibernate ant 项目 目前我收到此错误 HTTP Status 500 type Exception report message description The server encountere

随机推荐

  • python根据TF-IDF使用sklearn(TfidfVectorizer)计算句子的embedding

    TF IDF的计算公式如下 代码案例 from sklearn feature extraction text import TfidfVectorizer import jieba sentences list list 优惠的政策和政府
  • POI操作excel基本使用

    不用多说 下面的一个类中就是一些POI操作Excel xls 的常见操作 但是真正要生成一些如报表等复杂格式Excel的时候 通常的做法都是事先把格式一切的东西都手动制作好 数据模板 然后在Java应用中适当的时机把这个文件读进来 添加相应
  • 【蓝桥杯试题】试题 算法训练 印章

    试题 算法训练 印章 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 共有n种图案的印章 每种图案的出现概率相同 小A买了m张印章 求小A集齐n种印章的概率 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案 保
  • 正则实现去除字符串前后空格

    前言 正则去掉字符串前后空格 1 去除左空格 str1是处理后的 let str1 str replace s g 2 去除右空格 str2是处理后的 let str2 str replace s g 3 去除左右空格 let str3 s
  • qt 多边形填充 生成语义分割的mask 灰度图

    qt多边形的绘制 填充与显示 直接在QWidget界面显示 重写paintEvent即可 QtTest QtTest QWidget parent QMainWindow parent ui setupUi this void QtTest
  • linux c 语言小结

    linux c 语言小结 gdb 使用 gdb是调试linux c语言代码的 所以要调试linux c语言 先要 gcc g 文件名 才能开始调试 gdb 命令 首先在命令行中输入 gdb 调试的基本代码 list 展示 s 进入函数内部
  • 如何理解原码,反码,补码转换

    首先 无论原码还是反码还是补码都是二进制形式 有效位数是7位 最后 最左边 一位是符号位 用以区别正负 数据在内存中是以 补码 的形式存放 一 区别 原码 最高位 0 是正数 最高位 1 是负数 反码 正数 与原码一致 负数 最高位不变 其
  • 为什么我的AJAX请求处理成功了,还报404错误

    为什么我的AJAX请求处理成功了 还报404错误 忘了添加 ResponseBody注解 参考博客 https blog csdn net jiaotuwoaini article details 53445182
  • 标注数字对应的文本_循环嵌套_全局暂元

    标注数字对应的文本 循环嵌套 全局暂元 1 清洗数据 cd path EPS data use temp ybmy nodest dta clear gen hy3 real substr string hy4 1 3 gen hy2 re
  • 安全客&FREEBUF 文章阅读量似乎有点问题

    安全客 FREEBUF 文章阅读量似乎有点问题 随手写个脚本测试一下 其中freebuf那篇文章是很老的文章了 居然阅读量还是嗖嗖的涨 下次是不是可以写个折线图分析一下 看看每次加的是不是有规律的 scripts cat freebufcu
  • OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000b4680000, 297795584, 0)

    在测试环境中 出现如下报错 经排查发现是物理机内存不足 此时对应服务进程已不在 OpenJDK 64 Bit Server VM warning INFO os commit memory 0x00000000b4680000 297795
  • TIM的一些配置参数

    1 使能TIM时钟 RCC APB1PeriphClockCmd RCC APB1Periph TIM ENABLE 2 基础设置 TIM TimeBaseStructure TIM Period 计数值 TIM TimeBaseStruc
  • osg fbo(四),将颜色缓冲区图片中的牛通过shader变绿

    osg fbo 三 中 把整个屏幕变绿了 因为是把shader添加到了颜色缓冲区图片上了 如果只想把牛变绿 就需要把shader添加到原始场景根中 即 osg ref ptr
  • Linux笔记:终端复用与管理工具screen和tmux

    文章目录 目的 screen 快速入门 更多介绍 tmux 快速入门 窗口与窗格 更多介绍 总结 目的 通过终端使用Linux时比较纠结的是一个终端通常同一时间只能做一件事 虽然可以将任务放入后台 但是对于有输出或交互的任务放入后台并不是一
  • Linux 等待队列

    1 Linux内核中等待队列简介 Linux 内核等待队列可以用于许多用途 如中断 进程同步 以及定时 等待队列实现了在事件上的条件等待 希望等待特定事件的进程把自己放进合适的队列 并且放弃控制权限 因此等待队列表示一组睡眠的进程 当某一事
  • 基于Sql-Labs靶场的SQL注入-11~16关

    目录 Less 11 基于POST表单提交方式的字符型注入 爆破数据库名 爆破表名 爆破列名 爆破字段值 Less 12 基于POST表单提交方式的字符型注入 Less 13 基于POST表单提交方式的报错注入 爆破数据库名 爆破表名 爆破
  • HDLBits — Verilog Practice(每日一题)

    HDLBits Verilog Practice 每日一题 一 Getting Started 1 Getting Started 一 Getting Started 1 Getting Started 问题描述 Build a circu
  • C/C++面试笔试知识点总结

    C C 面试笔试知识点总结 1 const关键字的作用 变量 参数 返回值 2 什么是死锁 3 造成死锁的4个必要条件 4 如何避免死锁 5 static关键字作用 6 c c 中内存可以划分为几个部分 7 new 和 malloc的区别
  • DC-2靶机渗透测试

    1 信息收集 使用arp scan l扫描 扫描靶机开放端口 直接访问192 168 188 165发现无法访问被重定向到了 http dc 2 修改hosts文件 hosts文件是linux系统中负责ip地址与域名快速解析的文件 Linu
  • 关于实体类中多层嵌套集合,用mybatis的collection标签可以快速实现

    一 首先分析需求在有三个实体类的情况下 好比user类 Student YearClass类 结构如下 最外层类 public class user private String name private String age privat