首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

根据条件创建不同的POJO子对象,但共享公共字段

是一种在软件开发中常见的需求。这种情况下,可以使用继承和多态的概念来实现。

在面向对象编程中,可以创建一个父类(或接口)来定义共享的公共字段,然后创建多个子类来表示不同的条件。每个子类可以根据具体条件来定义自己特有的字段和方法。

以下是一个示例:

代码语言:txt
复制
// 父类
public class BasePOJO {
    private String sharedField;

    public String getSharedField() {
        return sharedField;
    }

    public void setSharedField(String sharedField) {
        this.sharedField = sharedField;
    }
}

// 子类1
public class SubPOJO1 extends BasePOJO {
    private String specificField1;

    public String getSpecificField1() {
        return specificField1;
    }

    public void setSpecificField1(String specificField1) {
        this.specificField1 = specificField1;
    }
}

// 子类2
public class SubPOJO2 extends BasePOJO {
    private String specificField2;

    public String getSpecificField2() {
        return specificField2;
    }

    public void setSpecificField2(String specificField2) {
        this.specificField2 = specificField2;
    }
}

在上述示例中,BasePOJO是父类,定义了一个共享的字段sharedFieldSubPOJO1SubPOJO2是两个子类,分别定义了自己特有的字段specificField1specificField2

通过使用继承和多态的特性,可以根据具体条件创建不同的子类对象,并且可以通过父类引用来访问共享的字段。

在实际应用中,可以根据具体需求来创建不同的子类,并根据条件来选择实例化哪个子类对象。这样可以根据不同的条件灵活地处理对象的共享字段和特有字段。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议根据具体需求和条件,选择适合的云计算服务提供商的相关产品和解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【译】如何在 Spring 中将 @RequestParam 绑定到对象

你将一组参数一起传递给应用程序不同层次是非常常见。这组参数通常可以 形成一个对象,你需要做就是 提取它并给它一个适当名字。...Java 有许多内置约束,你总是可以在需要时 创建自定义验证[5]。...参数绑定也适用于嵌套对象。 下面你可以找到一个例子,将之前引入排序条件移动到了产品查询条件 POJO 中。 要校验所有嵌套属性,你应该在嵌套对象字段上添加 @Valid 注解。...不可变对象有许多好处(也有一些缺点……嘘)。在我看来,最大好处是 更易于维护。 你是否曾经跟踪你应用程序穿过几十层,以理解什么条件导致了对象特定状态?在哪个地方这个或那个字段发生了变化?...,我们可以回到我们 POJO,并从类中移除所有的 setter 方法,使其对公共使用只读。

40810

阿里巴巴Java开发手册(华山版)

【强制】 避免在父类成员变量之间、或者不同代码块局部变量之间采用完全相同命 名,使可读性降低。...【推荐】 常量复用层次有五层:跨应用共享常量、应用内共享常量、工程内共享常量、 包内共享常量、类内共享常量。...3) 工程内部共享常量:即在当前工程 constant 目录下。 4) 包内共享常量:即在当前包下单独 constant 目录下。...反例: POJO createTime 默认值为 new Date(), 但是这个属性在数据提取时并没有置入具体值,在 更新其它字段时又附带更新了此字段,导致创建时间被修改成当前时间。...说明: 对大段代码进行 try-catch,使程序无法根据不同异常做出正确应激反应,也不利于定位问 题,这是一种不负责任表现。

1K30
  • 设计概念统一语言

    一个Java Bean类必须同时满足以下三个条件: 类必须是具体公共 具有无参构造函数 提供一致性设计模式公共方法将内部字段暴露为成员属性,即为内部字段提供规范get和set方法 认真解读这三个条件...,你会发现它们都是为框架通过反射访问类成员而准备前置条件,包括创建Java Bean实例和操作内部字段。...还有人混淆了领域模型与POJO概念,认为贫血模型对象就是一个POJO,殊不知这二者根本就是两个迥然不同维度。POJO关注类定义是否纯粹,领域模型关注是对领域逻辑表达与封装。...我个人又根据调用者不同,将其分为视图模型对象与消息契约对象。DTO必须支持序列化,同时它通常应该设计为一个Java Bean,即定义为公开类,具有默认构造函数和getter/setter方法。...领域模型必须是富领域模型 远程服务与应用服务接口输入参数和返回值定义为DTO,根据客户端不同,可以分为视图模型对象与消息契约对象

    75910

    大牧絮叨设计模式:简单工厂模式

    该工厂实例创建实例方法外部可以直接调用用于创建需要产品对象。 抽象产品(Product)角色 简单工厂模式用于可创建所有对象父类,负责描述所有实例公共接口定义。...具体产品(Concrete Product)角色 简单工厂模式创建目标,所有创建对象都是基于某个具体实例。 具体架构组件如下图所示: ?...image.png 1.2、简单工厂模式优缺点 优点: 工厂类是整个模式关键.包含了必要逻辑判断,根据外界给定信息,决定究竟应该创建哪个具体类对象.通过使用工厂类,外界可以从直接创建具体产品对象尴尬局面摆脱出来...当系统中具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例需求.这种对条件判断和对具体产品类型判断交错在一起,很难避免模块功能蔓延,对系统维护和扩展非常不利;这些缺点在工厂方法模式中得到了一定克服...macComputer MacComputer) GetInformation() string { return "MacBoot Pro 2018 引领商务本潮流" } 定义简单工厂,在工厂中根据不同条件创建不同对象

    41610

    《Java开发手册》

    2) 大于 0 小于size,重新创建大小等于 size 数组,增加 GC负担。...说明:注意,线程抛出异常堆栈,不能在主线程 try-catch 到。 【推荐】避免 Random实例被多线程使用,虽然共享该实例是线程安全,但会因竞争同一 seed 导致性能下降。...【参考】ThreadLocal对象使用static修饰,ThreadLocal 无法解决共享对象更新问题。...说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,提高查找速度是明显;另外, 即使在应用层做了非常完善校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。 2....【强制】在 varchar字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据 实际文本区分度决定索引长度即可。

    2K10

    java开发手册黄山版_码出高效java开发手册pdf

    2) 大于 0 小于size,重新创建大小等于 size 数组,增加 GC负担。...说明:注意,线程抛出异常堆栈,不能在主线程 try-catch 到。 【推荐】避免 Random实例被多线程使用,虽然共享该实例是线程安全,但会因竞争同一 seed 导致性能下降。...【参考】ThreadLocal对象使用static修饰,ThreadLocal 无法解决共享对象更新问题。...说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,提高查找速度是明显;另外, 即使在应用层做了非常完善校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。...【强制】在 varchar字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据 实际文本区分度决定索引长度即可。

    1.6K50

    基于Springboot+MybatisPlus外卖项目瑞吉外卖Day3

    瑞吉外卖Day3 创造实属不易,代码笔记全是个人学习理解,希望大家点赞关注支持一下 公共字段填充 一、问题分析 二、实现步骤 1、在实体类属性上加入@TableField注解,指定自动填充策略...2、按照框架要求编写元数据对象处理器,在此类中统一为公共字段赋值,此类需要实现MetaObjectMapper接口 三、代码实现 1.employee类添加如下变量 @TableField(fill...",LocalDateTime.now()); metaObject.setValue("updateUser",1); } } 解决id固定 一、问题分析 前面我们已经完成了公共字段自动填充功能代码开发...注意,我们在MyMetaObjectMapper类中是不能获得HttpSession对象,所以我们需要通过其他方式来获取登录用户id。...LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); //添加排序条件根据sort

    43620

    Java EE实用教程笔记----(8)第八章 Hibernate映射机制

    8.1 代理主键映射 代理主键是自定义、用来标识表记录,不具有任何业务实体意义,一般表中加入一个id字段来标识。如【实例7.1】中POJO类表示为: ? 对应映射文件配置为: ?...8.2 单个自然主键映射 自然主键虽然不提倡使用,使用自然主键情况还是存在,如UserTable表中用户如果只限于学生,可以不单独指定代理主键id,而改用自然主键XH(学号),这样POJO类可改写为...同样,映射文件Cj.hbm.xml也略有不同: ? 由于这种情况是把主键放入POJO类中,故数据存取也不同。 保存一个对象: ? 修改一个对象: ?...数据存取也很简单,只需操作不同类来得到想要得到信息。 ? 运行该段代码后,程序会根据Yjs类设置Xs表中xsType值为“yjs”,并把值插入到Xs表中。 ?...一 一对一关联 共享主键方式:在注册某个论坛会员时候,往往不但要填写登录账号和密码,还要填写其他详细信息,这两部分信息通常会放在不同表中,如表8.9和表8.10所示。 ? ?

    1K20

    mybatis详解(全)「建议收藏」

    (输入类型) 可输入类型有三种:简单类型、pojo对象pojo包装对象 1)简单类型 2)pojo对象 mybaits使用OGNL表达式解析对象字段值,#{}或者${}括号中值为pojo属性名称...因为在parameterType中已经提供了属性所属类,所以此时不需要写对象名 3)pojo包装对象 开发中通过pojo传递查询条件,查询条件是综合查询条件,不仅包括用户查询条件还包括其他查询条件...="集合中pojo对象对应主键字段" jdbcType="字段类型" property="集合中pojo对象主键属性" /> <result column="可以为任意表<em>的</em><em>字段</em>" jdbcType...表一个字段(可以为任意表一个字段) jdbcType --> 字段类型 property --> 映射到pojo对象一个属性(须为type定义pojo对象一个属性) association...这两者之间唯一不同是,id表示结果将是对象标识属性,这些在 比较对象实例时用到,这样可以提高整体性能,尤其是缓存和嵌套结果映射时候 ``` mybatis动态SQL 动态sql根据不同条件生成不同

    2K30

    Mybatis-06 动态Sql

    tid查询其对应老师 复杂对象就用association和collection 对象:association 集合:collection 4.1 按照查询嵌套处理 <mapper namespace=...ofType & javaType javaType用来指定实体类中属性 ofTyoe用来指定映射到List或者集合中pojo类型,泛型中约束类型 **注意点:**注意一对多和多对一中,属性名和字段问题...动态sql 动态SQL就是指根据不同条件生成不同SQL语句 If choose (when, otherwise) trim (where, set) foreach 1.基础准备 1.1 创建数据库...4.trim (where, set) where元素只会在元素返回任何内容情况下才插入 “WHERE” 子句。而且,若子句开头为 AND 或 OR,where 元素也会将它们去除。...缓存会保存列表或对象(无论查询方法返回哪种) 1024 个引用。缓存会被视为读/写缓存,这意味着获取到对象并不是共享,可以安全地被调用者修改,而不干扰其他调用者或线程所做潜在修改。

    41820

    什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?

    按照Martin Fowler解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式Java对象”,大家都使用“简单java对象”来称呼它。...为写成JavaBean,类必须是具体公共,并且具有无参数构造器。JavaBeans 通过提供符合一致性设计模式公共方法将内部域暴露称为属性。...view层只需显示10个字段,没有必要把整个PO对象传递到client,这时我们就可以用只有这10个属性DTO来传输数据到client,这样也不会暴露server端表结构。...但应是抽象出业务对象,可以和表对应,也可以不,这根据业务需要。个人觉得同DTO(数据传输对象),在web上传递。...VO属性是根据当前业务不同不同,也就是说,它每一个属性都一一对应当前业务逻辑所需要数据名称。 VO是什么?

    2.8K20

    Java开发手册——嵩山版(清幽现云山,虚静出内功)

    【强制】 避免在父类成员变量之间、或者不同代码块局部变量之间采用完全相同命名, 使可理解性降低。...【推荐】 常量复用层次有五层:跨应用共享常量、应用内共享常量、工程内共享常量、包 内共享常量、类内共享常量。...3) 工程内部共享常量:即在当前工程 constant 目录下。 4) 包内共享常量:即在当前包下单独 constant 目录下。...反例: POJO createTime 默认值为 new Date(),但是这个属性在数据提取时并没有置入具体值,在 更新其它字段时又附带更新了此字段,导致创建时间被修改成当前时间。...说明: 对大段代码进行 try - catch ,使程序无法根据不同异常做出正确应激反应,也不利于定位问题, 这是一种不负责任表现。

    1.2K20

    Java学习笔记-全栈-web开发-15-MyBatis

    4.1.2 传递POJO包装对象 开发中通过pojo传递查询条件 ,查询条件是综合查询条件,不仅包括用户查询条件还包括其它查询条件(比如将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数...如果查询列名和映射pojo属性名全部不一致,则不会创建pojo对象; 如果查询列名和映射pojo属性名有一个一致,就会创建pojo对象。 输出POJO列表 mapper ?...4.2.2 resultMap 如果查询出来列名和属性名不一致(即数据库字段与model字段不一致),通过定义一个resultMap将列名和pojo属性名之间作一个映射关系。...4.3 映射用法总结 输出单个pojo对象pojo列表时,mapper映射文件中resultType类型是一样,mapper接口方法返回值不同。...非线程安全对象(如sqlSession),不允许将其作为类属性作为类共享属性,而应该在调用处,每次获取新对象,否则会出现竞争。 Mapper接口没有实现类,但是mybatis为其生成了代理对象

    1.4K20

    【软件开发规范一】《Java开发规范》

    【推荐】常量复用层次有五层:跨应用共享常量、应用内共享常量、工程内共享常量、包内共享常量、类内共享常量。...3) 工程内部共享常量:即在当前工程constant目录下。 4) 包内共享常量:即在当前包下单独constant目录下。...反例:POJOgmtCreate默认值为new Date();但是这个属性在数据提取时并没有置入具体值,在更新其它字段时又附带更新了此字段,导致创建时间被修改成当前时间。 10. ...说明:注意,线程抛出异常堆栈,不能在主线程try-catch到。 11. 【推荐】避免Random实例被多线程使用,虽然共享该实例是线程安全,但会因竞争同一seed 导致性能下降。 ...说明:对大段代码进行try-catch,使程序无法根据不同异常做出正确应激反应,也不利于定位问题,这是一种不负责任表现。

    1.9K42

    Hibernate与MyBatis详解「建议收藏」

    1.2 MyBatis简介 iBATIS 着力点,则在于POJO 与SQL之间映射关系。然后通过映射配置文件,将SQL所需参数,以及返回结果字段映射到指定POJO。...Hibernate也可以自己写SQL来指定需要查询字段这样就破坏了Hibernate开发简洁性。而MybatisSQL是手动编写,所以可以按需求指定查询字段。...抓取策略 Hibernate对实体关联对象抓取有着良好机制。对于每一个关联关系都可以详细地设置是否延迟加载,并且提供关联抓取、查询抓取、查询抓取、批量抓取四种模式。...比如: 这个更高级配置创建了一个 FIFO 缓存,并每隔 60 秒刷新,存数结果对象或列表 512 个引用,而且返回对象被认为是只读,因此在不同线程中调用者之间修改它们会 导致冲突。...MyBatis二级缓存配置都是在每个具体表-对象映射中进行详细配置,这样针对不同表可以自定义不同缓存机制。

    55010

    Spring入门指南

    user.show(); } 2.3.bean 2.3.1.定义 由 Spring IoC 容器管理对象称为 Bean,Bean 根据 Spring 配置文件中信息创建。...session 同一个 HTTP Session 共享一个 Bean 实例,不同 Session 使用不同 Bean 实例。该作用域仅在当前 HTTP Session 内有效。...类似于 singleton,不同是,singleton 表示每个 IoC 容器中仅有一个 Bean 实例,而同一个 Web 应用中可能会有多个 IoC 容器,一个 Web 应用只会有一个 ServletContext...但是 需要注意是,如果name属性一旦指定,就只会按照名称进行装配。 它们作用相同都是用注解方式注入对象执行顺序不同。@Autowired先byType,@Resource先byName。...支持多种类型计划任务:cron,fixDelay,fixRate @Conditional | 根据满足某一特定条件创建特定Bean @Enable* | 通过简单@Enable 来开启一项功能支持

    91884

    MyBatis框架之第二篇

    } 上面需求中SQL需要两方面条件,一方面是订单,一方面是用户,所以可以在QueryVo中定义一个Order对象用于保存订单查询条件,再定义一个User对象用于保存用户查询条件。...order2表最大问题就是字段名是以下划线分割,这与Orderpojo属性名不一致。...利用SQL字段可以定义别名功能,满足字段名与POJO属性名相同要求。...因此本节内容比较杂,内容也较多,每块内容都相对独立,不难掌握。 5.1.1.动态SQL条件 5.1.2....,这个用户相关订单信息是多条不同,这样结果集最终返回到java对象中应该是一个用户信息,其中包含一个关于这个用户订单信息List集合。

    85610

    TkMapper(通用mapper)「建议收藏」

    这里有个链接讲比较详细:https://blog.csdn.net/lyf_ldh/article/details/81041141 注意:TkMapperpojo类要用包装类型 其他各层大家根据各自情况自行编写...8、insertSelective(T):通过pojo对象, 插入对象 参数:UmsPeimision对象 返回值:int 只给有值字段赋值 9、updateByPrimaryKey(T):通过pojo...(Object):通过主键, 删除对象 参数:主键 返回值:int 三、Example方法使用     创建一个Example实例,有很多方法,简单条件查询,还可以创建条件对象,example.createCriteria...()来添加其他条件根据查询需求条件对象可以添加多个。...pid", 4); //添加条件 pid = 4 2> 创建条件对象,并添加条件 Example.Criteria criteria1 = example.createCriteria(); //创建条件对象

    1.4K20

    一位攻城狮自我修养,在于良好编程规范

    命名风格 类名使用UpperCamelCase风格,下列情形除外: DO: Data Object....跨应用共享常量: 放置在二方库中,通常是client.jar中constant目录下 应用类共享常量 放置在一方库中,通常是子模块中constant目录下 工程内共享常量 在当前工程constant...,便于复用和维护 不需要增加若干空格来使某一行字符与上一行对应位置字符对齐 不同逻辑,不同语义,不同业务代码之间只需要插入一个空行分割来提升可读性即可 OPP规约 避免通过一个类对象引用访问类静态变量和静态方法...static成员变量并且与成员共享,必须是protected 类非static成员变量并且仅在本类中使用,必须是private 类static成员变量如果仅在本类中使用,必须是private 若是static...增加: ThreadLocalstatic 这个变量是针对一个线程内所有操作共享 因此设置为静态变量,所有的此类实例共享此静态变量 即这个变量在类第一次被使用时装载,只分配一块内存空间,只要这个线程内定义所有此类对象都可以操作这个变量

    54510

    SpringBoot-Mybatis_Plus学习记录之公共字段自动填充

    一.应用场景 ---- 平时在建对象时候都会有最后修改时间,最后修改人这两个字段,对于这些大部分表都有的字段,每次在新增和修改时候都要考虑到这几个字段有没有传进去,很麻烦。...mybatisPlus有一个很好解决方案。也就是公共字段自动填充功能。一般满足下面条件字段就可以使用此功能: 这个字段是大部分表都会有的。...全局配置对象中。...填充字段需要忽略验证,在表对象pojo对应属性上添加下面注解: /** * 最后修改人Id */ @TableField(value="last_update_id",validate=FieldStrategy.NOT_EMPTY...配置文件中公共字段生成类bean //2.实现IMetaObjectHandler类 //3.忽略对应字段为空检测,在pojo属性上添加@TableField(value="last_update_name_id

    1.8K40
    领券