Java实体类中封装其他实体类并引用

JavaWeb-实体类对象嵌套实体类对象的查询 1.1 实体类代码 Cart类(购物车类) public class Cart { // 自增的购物车记录id private int cid; // 用户id private int uid; // 产品id private int pid; // 产品数量 private int cnum; // 产品总价 private BigDecimal ccount; // 999.99 99999(lon 阅读详情

在Java开发过程中有很多情况是二个表及以上的联合操作,这是需要分清楚表的主次关系。在引用的时候有人会把二个表的数据全都封装在一个实体类中,然后在对这个实体类进行操作,但如果是三个表呢?四个表呢?还都封装在一个实体类吗?这样被封装的实体类的数据是不是太多了呢?而且也会照成层次不分,大大的抬高了代码的耦合性。和实体类泛滥的情况。下面开始介绍该如何正确的封装实体类

第一个实体类

public class UsersLogin {
    private Integer usersId;
    private String usersName;
    private String pass;
    private int flag;
    //省略Getter和Setter
    }

第二个实体类

public class Shoopping {
    private Integer shoopId;
    private String goodsName;
    private Double price;
    private String address;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date produceDate;
    private String picture;
    private String categoryName;
    private int num;
    private int flag;
    //引用第一个表的实体对象
    private UsersLogin usersLogin;
    //省略Getter和Setter
    }

使用mapper.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 namespace="com.springboot.mapper.ShiroUserMapper">
<resultMap autoMapping="true" type="com.springboot.entity.UsersLogin " id="goodsMap">
    <id property="usersId" column="usersId"/>
    <association autoMapping="true" property="shiroUser" javaType="com.springboot.entity.Shoopping ">
        <id property="shoopId" column="shoopId"/>
    </association>
            <!--
        复杂的属性我们需要单独处理
           对象使用 : association
           集合使用 : collection
        -->
        <!--   collection中的ofType:使用ofType获取   -->
<!--        <collection property="实体类属性名" ofType="接收获取的内容">-->
<!--            <result column="employee_id" property="employeeId"></result>-->
<!--        </collection>-->
</resultMap>
    <select id="findUserList" resultMap="goodsMap">
         select * from UsersLogin u,Shoopping r where u.usersId=r.shoopId
    </select>
</mapper>

查询结果(我这展示的结果跟上面的实体类不对应,但大致结果是这种格式的)

[
UserList{id=1, user_name='admin@shiro.con', password='admin', role=Role{id=1, role_name='admin', user_name='admin@shiro.con'}},
UserList{id=2, user_name='test@shiro.con', password='e10adc3949ba59abbe56e057f20f883e', role=Role{id=2, role_name='test', user_name='test@shiro.con'}}]

第二种:创建第三个实体类,直接把这二个实体类封装里面

第一个ShiroUser

public class ShiroUser {
    private int id;
    private String user_name;
    private String password;
    //省略里面的方法
    }

第二个Shiro_user_role

public class Shiro_user_role {
    private int id;
    private String role_name;
    private String user_name;
    //省略方法
    }

第三个UserList

public class UserList {
    private ShiroUser shiroUser;
    private Shiro_user_role role;
    //省略方法
    }

配置mapper.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 namespace="com.springboot.mapper.ShiroUserMapper">
    <resultMap autoMapping="true" type="com.springboot.entity.UserList" id="goodsMap">
        <association autoMapping="true" property="role" javaType="com.springboot.entity.Shiro_user_role">
            <id property="user_name" column="user_name"/>
        </association>
        <association autoMapping="true" property="shiroUser" javaType="com.springboot.entity.ShiroUser">
            <id property="user_name" column="user_name"/>
        </association>
    </resultMap>
    <select id="findUserList" resultMap="goodsMap">
         select * from shiro_user u,shiro_user_role r where u.user_name=r.user_name
    </select>
</mapper>

结果:

[
UserList{shiroUser=ShiroUser{id=1, user_name='admin@shiro.con', password='admin'},
role=Role{id=1, role_name='admin', user_name='admin@shiro.con'}
},
UserList{shiroUser=ShiroUser{id=2, user_name='test@shiro.con', password='e10adc3949ba59abbe56e057f20f883e'},
role=Role{id=2, role_name='test', user_name='test@shiro.con'}
}
]

如果需要在html页面显示:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>权限管理</title>
</head>
<body>
  <table>
      <tr>
          <td>id</td><td>用户名</td><td>角色</td>
      </tr>
      <th:block th:each="u:${userLists}">
          <tr>
              <td th:text="${u.getShiroUser().getId()}"></td>
              <td th:text="${u.getShiroUser().getUser_name()}">
              <td th:text="${u.getRole().getRole_name()}">
          </tr>
      </th:block>
  </table>
</body>
</html>
保姆级教程:在Windows/Linux双系统下搞定Microsemi Libero SoC v11.8安装与白银版License激活 本文提供了一份详细的Microsemi Libero SoC v11.8在Windows/Linux双系统下的安装与白银版License激活指南。涵盖环境准备、安装流程、License跨平台配置及常见问题排查,帮助开发者高效搭建FPGA开发环境。 阅读详情

相关推荐

Kafka 系列 —(17)Kafka 流式处理:Kafka Streams架构、使用场景、框架选择

本文介绍了KafkaStreams的架构特点、应用场景及与其他流处理框架的比较。KafkaStreams作为嵌入式分布式流处理库,其核心架构包含流处理器、任务、拓扑和本地状态存储,具备自动容错和伸缩能力。适用于实时监控、ETL、聚合、Join、物化视图等低延迟场景。与Flink、Spark相比,KafkaStreams适合简单架构和微服务,而Flink适合大规模处理,Spark更适合批处理。选择框架需根据具体场景需求,如微服务推荐KafkaStreams,大规模处理推荐Flink。

moton2017的博客 1630

springboot mybatis 处理多对一映射关系的方法(实体类中包含另一个实体类属性)

车辆充电记录实体类包含另一个实体类CarInfoEntity的属性车辆信息实体类car_info

Mrzhuangr的博客 2871

FPGA新手必看:用USB转TTL实现串口通信的完整流程(附CH340G电路详解)

本文为FPGA新手提供了通过USB转TTL模块实现串口通信的完整实战指南。详细解析了CH340G电路设计要点、硬件连接方法,并分享了经过验证的Verilog代码框架,帮助读者快速掌握FPGA与PC通信的核心技术,解决电平匹配与波特率设置等常见问题。

cake8的博客 1048

如何在实体类中调用另一个实体类的属性

ProductInfo实体类有category的categorytype,但是想取的是categoryname 可以在ftl页面直接调接口 Controller层写一个TypetoName @GetMapping("/ProductTypeToName") public String ProductTypeToName(Integer type){ List<Integer> typeList = new ArrayList<>();

qq_43212234的博客 1361

YOLO11实战:手把手教你优化钢材表面缺陷识别模型(基于NEU-DET数据集)

本文详细介绍了如何使用YOLO11优化钢材表面缺陷识别模型,基于NEU-DET数据集进行实战训练。从数据增强、模型架构优化到训练过程控制,全面解析提升钢材缺陷检测性能的关键技术,特别针对裂纹、划痕等典型缺陷提出针对性解决方案。

weixin_29081163的博客 379

Java面向对象——封装

面向对象三大特性

weixin_60246887的博客 606

如何用mybatis查询嵌套实体类(实体类中有另一个实体类)的数据

用mybatis查询实体类中有另一个实体类的数据

m0_64763698的博客 2939

蓝牙攻防实战指南:低功耗蓝牙

Bluetooth Low Energy(也称Bluetooth Smart)是经典蓝牙(Bluetooth Classic)的演进版本,设计目标是实现极低功耗,适用于无需频繁更换电池的设备,如智能手环、健康监测器、蓝牙标签等。Bluetooth Low Energy 是一项极具前景的无线通信技术,它以极低的功耗实现了短距离高效通信,广泛应用于智能设备和物联网领域。然而,其简化的协议结构和配对机制也带来了不小的安全挑战。

idlecloud0105的博客 682

AI 视觉宠物喂食器:智能识别 + 精准投喂,打造宠物喂养新体验

AI 视觉宠物喂食器将边缘 AI 计算与传统硬件结合,既解决了传统喂食器的核心痛点,又兼顾了 DIY 的易用性和扩展性。无论是宠物主人 DIY 使用,还是小型创客团队产品化,该方案都具备较高的实用价值和落地性,为宠物智能化喂养提供了轻量化的实现路径。

weixin_42300449的博客 416

Java实体类深拷贝实践问题与解决方法

在实际开发中,我们经常需要复制一个对象并修改部分属性,但使用时会遇到一个常见陷阱: 根本原因:浅拷贝陷阱 执行的是浅拷贝,对于基本类型和String等不可变对象会创建新值,但对于引用类型(Map、List、自定义对象等)只复制引用地址。实际测试未生效 方案二:JSON序列化深拷贝(最通用) 方案三:针对不同JSON库的实现 FastJSON Jackson Gson 方案四:工具类封装(企业级推荐) 性能对比分析 方案 易用性 性能 内存开销 适用场景 BeanUtils + 手动

weixin_42630366的博客 333

使用verilog实现基于FPGA的TDC设计

verilog实现TDC 高精度时间数字转换器概述(TDC) 简介: TDC被用于测量时间间隔,应用在物理研究、飞行时间测量领域等。 本设计使用verilog实现并在xilinx和altera的FPGA上均可实现! 设计中使用到下述几个模块,包括FIFO,COUNT等,在xilinx下也使用到了一些原语等。下面有实现的代码和仿真截图等。 顶层模块设计如下: module top( input wire start, input wire stop, input wire clk, output wire T

QQ_778132974的博客 6253

java 封装类的引用_Java中如何封装自己的类,建立并使用自己的类库?

from:http://blog.youkuaiyun.com/luoweifu/article/details/7281494随着自己的编程经历的积累会发现往往自己在一些项目中写的类在别的项目中也会有多次用到。你肯定会想:如何自己的写的一些常用的类积累起来,生成自己的类库?如果是这样的话,很庆幸,你遇到通道中人了,因为我也是这样做的。下面就介绍一下我是怎么做的吧:一、先来明白一下关于classpath和pa...

weixin_29126497的博客 247

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

在java开发当中什么是实体类

这里写我的自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 这是我的...

qq_44749398的博客 7463

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java中的封装和实体类(javabean)

本文详细介绍了面向对象编程中的封装概念及其设计规范,重点讲解了实体类的定义与应用。封装通过私有化成员变量和提供公共访问方法,实现数据隐藏与安全访问,提升代码可维护性和安全性。实体类作为存储数据的特殊类,需遵循成员私有化、提供getter/setter、显式定义无参构造器等规范。文章还阐述了封装的优势和实体类在业务分离中的应用场景,并强调了实际开发中的注意事项,如数据校验和框架兼容性问题。这些规范有助于构建更健壮、可维护的面向对象程序。

xiaoyu725361的博客 1772

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java实体类

实体类~

0禾呈0的博客 2万+

java将实体类封装变成xml

封装相关视频讲解:C语言程序设计入门之环境安装DLL动态链接库创建C++设计模式:观察者模式的实用工程技术Java实体类封装成XML 在Java中,我们经常需要将实体类中的数据保存到文件或者通过网络传输。其中,XML是一种常用的数据格式,可以用于数据的存储和传输。本文将介绍如何将Java中的实体类封装成XML格式的数...

weixin_41456157的博客 632

java响应实体类封装

前后端分离的开发模式中,或者与第三方接口交互,需要规范接口响应,下面是我在开发中的封装的一组响应实体类

u012693016的博客 6460

Java实体类——entity类的使用与学习

Java实体类(entity)一、前言(项目代码引申)二、实体类的众多理解三、实体类的作用四、实体类的书写规范五、序列化的必要性 一、前言(项目代码引申) 在一个开发的android项目中,使用到了Entity类 其中SecurityDomain是一个架构模板可忽略,其余四个Entity类是根据实际功能需求扩写的,项目中这四个实体类在(1)对应的Fragment类(2)Repository(3)VehicleViewModel中使用。 这四个Entity类中包含构造方法,对应开关(Switch)的功能写了

ambitionLlll的博客 2万+

java报文封装_java通过实体类封装报文

/*** 报文组装类* @Author:* @Date:*/public classMessageAssembly {/*** 测试 EC成员订购报文(发送)实体类 完成* 问题:* 1.业务文档修改版中* 报文有:JoinECTime 标签,列表中不存在* 列表有:ProdInfo --> SubsID 标签,报文中不存在*@p...

weixin_42498347的博客 904

Java通过反射机制获取枚举值,并封装进实体类

1. 首先理解反射 Java反射机制是在运行状态中,对于任意一个类(class文件),都可以知道该类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个方法和属性; 这种动态获取的信息已经动态调用对象的方法的功能称为java语言的反射机制。 2. java获取Class对象的三种方式 Class.forName(“类路径”); 调用属性,通过.class来获取其对应的Class对象;...

qq_39198749的博客 1427

Java 分页实体类封装

在开发中我们经常会用到的分页实体类,这里封装一个简单的分页实体类 package com.xxx.xxx.page; import java.util.List; import java.util.Objects; /** * @Author szx * @Date 2021/7/3 23:39 * @Description */ public class PageInfo<T> { /** * 当前页码 */ private Long curre

zxjnmc 1752

Java实体类(entity)作用

对java实体类的众多理解: A .就是属性类,通常定义在model层里面  B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。好处:1.对对象实体的封装,体现OO思想。2.属性可以对字段定义和状态进行判断和过滤3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便。 C. 说白了就是为了让程序员在对数据库操作的时候不用写SQL语句  D. 就是一个数据库表生成一个类...

TwcatL 4946

Java实体类的作用

一直在用实体类 但是今天有人问我它的具体作用,我才发现自己不能很好的去解释,只能说个大概 后面具体的去找了相关的资料  总结并附上了一些他人的看法: (一)  实体类的简单介绍: 在我们开发中 经常遇到有着Set方法和Get方法的类就是实体类,它是一个属性类,比如一个最简单的学生类,它有着 姓名、学号、性别等相关的属性,我们把这个类的相关属性用实体类去定义出来。 public class

qq_27263999的博客 2765

Java 中 static 与实体类的封装艺术:从概念到实践的深度对比

本文系统解析了Java中实体类与static关键字的差异及协同应用。从封装思想出发,实体类通过私有属性和访问器方法实现对象级别的数据安全,而静态机制通过类级共享资源管理全局功能。二者在生命周期、访问方式、内存分配和适用场景上存在本质区别:实体类依赖实例化对象,适用于业务数据载体;静态成员直接通过类访问,常用于工具方法和全局配置。文中还探讨了静态内部类的嵌套艺术、混合使用模式及常见错误规避,强调应根据需求在"独立实例"与"共享资源"间合理取舍,通过封装原则实现高内聚代码

qq_57076730的博客 744
上一篇: js二个小数相乘结果出现很多小数点
下一篇: SpringBoot+MyBatis实现登录和拦截器
与黑夜为伍
博客等级 码龄7年 19粉丝 80原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值