`

业务DTO定义实践

阅读更多

一.定义抽象类,重写toString()方法

     在toString()方法中调commons-lang.jar的ToStringBuilder类的reflectionToString方法。这样,在日志输出时直接输出业务DTO对象,就能输出对象的属性及属性值。

package com.bijian.study;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

public abstract class AbstractDTO implements java.io.Serializable {

    private static final long serialVersionUID = 639200629041717L;

    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
    }
}

 

二.定义业务DTO对象,重写hashCode()、equals()方法,并实现Comparable接口

package com.bijian.study;

public class PersonDTO extends AbstractDTO implements Comparable {

    //编码
    private String code;
    
    //姓名
    private String name;
    

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((code == null) ? 0 : code.hashCode());
        return result;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (!(obj instanceof PersonDTO)) {
            return false;
        }
        PersonDTO other = (PersonDTO) obj;
        if (code == null) {
            if (other.code != null) {
                return false;
            }
        } else if (!code.equals(other.code)) {
            return false;
        }
        return true;
    }

    public int compareTo(Object object) {
        String thisCode = this.getCode();
        String anotherCode = ((PersonDTO) object).getCode();
        return thisCode.compareTo(anotherCode);
    }
    
    public static void main(String[] args) {
        PersonDTO personDTO = new PersonDTO();
        personDTO.setCode("123");
        personDTO.setName("Test");
        System.out.println(personDTO);
    }
}

 运行PersonDTO类的main方法,打印结果如下所示:

com.bijian.study.PersonDTO@173a10f[
  code=123
  name=Test
]
  这里其实就是调用commons-lang.jar的ToStringBuilder类的reflectionToString方法输出的格式样子,比较清蜥。
分享到:
评论

相关推荐

    快速生成DTO

    使用Excel模板生成DTO是一种创新的方法,开发者可以在Excel表格中定义DTO的属性和类型,然后通过工具自动生成对应的Java类。这种方法减少了手动编写代码的时间,提高了效率,同时也降低了出错的可能性。 3. **Java...

    Dto转实体类 AutoMapper

    Dto主要用于在系统组件之间传递数据,而实体类通常代表数据库中的表或者业务逻辑中的实体。在实际项目中,我们经常需要将Dto对象转换为实体类,反之亦然,这时就引入了自动化映射工具——AutoMapper。 AutoMapper是...

    Java利用Freemarker模板自动生成dto、dao、rowmapper、bo、service代码

    总的来说,Java利用Freemarker模板生成代码是一种常见的自动化开发实践,它提高了开发效率,降低了出错概率,让开发者能更专注于业务逻辑的实现,而不是基础架构的搭建。通过理解和掌握这一技术,开发者可以更好地...

    VO / DTO / BO / ORM DAO entity DO PO/ POJO(分层领域模型规约)整理

    - **定义**:BO 表示业务对象,封装了一组业务逻辑或操作,通常包含业务规则和方法。 - **应用场景**: - 复杂业务流程的管理。 - 将多个PO或DO组合在一起形成一个更高级别的业务单元。 - **优势**: - 支持复杂...

    微服务之间如何共享DTO?

    因此,每个服务都会有自己的域模型,这是对业务逻辑的抽象,而DTO则作为域模型与外部交互的桥梁。 在微服务间共享DTO的过程中,一个常见的做法是发布域对象为DTO。例如,订单服务可能会有OrderDTO,它代表了客户端...

    natParkiAPIwithNetMVC:开发该其余API的目的是为了了解Web API结构,SOLID原理和设计模式(存储库,DTO等)。 使用ASP.NET Core MVC设计模式和Razor页面开发的UI

    在ASP.NET Core应用中,存储库通常作为接口定义,包含了一组操作数据的方法。具体的数据访问实现,如Entity Framework Core,可以作为存储库接口的实现,这样就允许在不修改业务逻辑的情况下更换不同的数据访问技术...

    mobile.app.ws:使用ObjectDTO的Spring Boot项目

    在这个项目中,开发者可能已经定义了一系列的ObjectDTO类,这些类代表了业务逻辑中的对象,但不直接与数据库模型对应。ObjectDTO通常包含必要的属性,用于在服务层和服务消费者之间传递数据。例如,一个`UserDTO`...

    Swagger_Dto_to_Entity_Mapstruct

    通过定义简单的映射接口,MapStruct能够生成高效的、优化过的映射代码,使得开发人员可以专注于业务逻辑,而不是数据转换。 在实际应用中,开发者可能会遇到以下场景: - 处理复杂的嵌套对象和集合映射。 - 实现...

    领域驱动设计学习总结(一)

    2. **限界上下文(Bounded Context)**:限界上下文是DDD中的一个重要概念,它定义了领域模型的边界,明确了模型在特定业务领域的适用范围和语义。 3. **领域统一语言(Ubiquitous Language)**:领域统一语言是...

    petshop3层架构范例,供新手学习,Model+DAL+IDAL+DALFactory+BLL

    8. **Model**:这部分通常包含了业务对象的模型定义,它们代表了应用程序处理的数据实体。在"Model"目录下,你可能会找到与数据库表对应的类。 通过这个PetShop的实例,新手可以学习到如何组织和实现一个完整的三层...

    【ASP.NET编程知识】ABP框架的体系结构及模块系统讲解.docx

    2. 实体(Entity):代表业务领域的数据和操作,在实践中,通过用来映射成数据库表。 3. 仓储(Repository):操作数据库进行数据存取。仓储接口在领域层定义,而仓储的实现类应该写在基础设施层。 4. 领域服务...

    C#分层开发

    数据模型层定义了业务对象的结构和属性,是业务实体和数据库表的映射。在C#中,可以使用Poco(Plain Old CLR Object)类来定义模型。 2.5 通信层 通信层确保各层之间的数据传输。C#中的接口(Interface)和依赖注入...

    FLEX+Java+BlaseDS 整合 OA系统

    4. **Spring配置**:编写Spring的配置文件,定义bean,包括数据源、SessionFactory、事务管理器以及业务接口和实现。 5. **BlazeDS配置**:在Web.xml中配置BlazeDS的Servlet和Listener,定义Flex Remoting服务,使...

    简单三层Entity Framework Demo

    **正文** 本示例"简单三层Entity Framework Demo"旨在演示如何使用Entity Framework(简称EF)在.NET环境中构建一个基于三层架构的应用程序。...通过实践,你将深入理解EF在实际项目中的运用,以及三层架构的优势。

    ASP.NET源码——RedSoft多层分布式架构实例源码.zip

    6. 数据传输对象(DTO):当不同层之间需要交换数据时,DTO用于避免直接暴露业务对象,减少耦合度。 7. 服务接口(Interface):定义各层之间的通信协议,确保解耦合。 在"RedSoft多层分布式架构实例源码"中,你...

    20-C-ValueObject-Code.zip

    例如,在Web服务或数据库访问层中,我们可能需要将一组复杂的业务对象转换为DTO,然后发送给客户端。 在C#中,DTO通常定义为简单类,包含一系列属性,没有行为(方法)。例如,一个用户DTO可能是这样的: ```...

    spring boot 常用数据库操作例子

    综上所述,这个示例提供了Spring Boot和JPA结合使用的基本用法,包括多数据库支持、存储过程调用、原生SQL查询以及结果转换为DTO的实践。这对于学习和理解如何在Spring Boot应用中进行高效、灵活的数据库操作是非常...

    AOS开发指南

    - **快速实现业务需求**:通过预设的功能模块与灵活的配置机制,加速业务需求的实现过程。 - **全栈式技术解决方案**:覆盖从前端到后端的全套技术栈,满足不同层次的开发需求。 #### 三、AOS平台开发流程 AOS平台...

    accp5.0s2在.NET框架下开发三层结构数据库应用系统 上机二代码

    在这里,开发者定义和实现与业务相关的函数和方法,比如验证用户输入、计算、执行复杂的业务过程等。在.NET中,可以通过类库(Class Library)项目来创建业务逻辑组件。 3. 数据访问层(Data Access Layer):这一...

    raychenmvc2

    "Web.Model"目录中,模型(Model)类通常定义了业务对象的属性和行为,它们是数据传输对象(DTO)或者领域模型(Domain Model)。这些模型类可能包含了验证逻辑和业务规则,它们在业务逻辑层和数据访问层之间起到了...

Global site tag (gtag.js) - Google Analytics