前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot第一集:由springboot的dto拓展的内容

springboot第一集:由springboot的dto拓展的内容

作者头像
达达前端
发布2023-10-08 17:56:53
2970
发布2023-10-08 17:56:53
举报
文章被收录于专栏:达达前端达达前端

DTO: Data Transfer Object. 通常是在 OpenApi . 即此项目与其他外界项目交互时使用的对象.

在Spring Boot应用程序中,数据传输对象(DTO)最常用于表示业务模型对象或从应用程序或其服务端点传递的数据模型对象。DTO将这些模型对象中的数据转换为一种便于传输和有效处理的格式。

通常情况下,DTO具有以下几个作用:

  1. 将业务模型对象的详细信息隐藏起来,以便在应用程序的客户端和服务端之间进行数据传输。
  2. 将多个模型对象合并为一个DTO对象,以便简化数据交换和处理过程。
  3. 通过将某些模型对象属性的转换或计算封装到DTO中,可以抽象化服务端点之间的数据处理逻辑。
  4. 最终,提供一个整体的清晰,不分双方,简单的数据传输结构。
  5. 同样,DTO在优化性能方面也起到了很大的作用。

而Spring Boot可以通过各种注释来高效地创建和使用DTO,这些注释包括@Data@Getter@Setter@NoArgsConstructor@AllArgsConstructor等。通过这些注释,可以自动化DTO中的许多任务,这有效地简化了DTO的创建和维护。

代码语言:javascript
复制
@Getter
@Setter
@TableName("user")
@ApiModel(value="user_boookdto", description = "")
public class User_BookDto implements Serializable {
 private static final long serialVersionUID = 1L;
 
 @TableId("uid")
 private String uid;
 
 @TableField("uname")
 private String uname;
 
 @TableField("bname")
 private String bname;
 
 @TableField("author")
 private String author;
 
 @TableField("info")
 private String info;
 
 @TableField("imgpos")
 private String imgpos;
}

在Service里写好方法,然后在impl里面实现

代码语言:javascript
复制
public interface BookService extends IService<Book> {
 User_BookDto getDataByUserAndBook(User_BookDto user_bookDto);
}

实现service

根据前端传过来的数据获取这两个表中的所有信息,然后使用对象拷贝,将两个表中的数据对象拷贝到 dto,最后返回 dto 即可

代码语言:javascript
复制
@Service
public class BookServiceImp extends ServiceImpl<BookDao, Book> implements BookService {
 @Autowired
 private UserService userService;
 
 @Override
 public User_BookDto getDataByUserAndBook(User_BookDto user_bookDto) {
  // 获取书的所有信息
  LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
  queryWrapper.eq(Book::getBname, user_bookDto.getBname());
  Book book12 = this.getOne(queryWrapper);
  
  // 获取用户的所有信息
  LambdaQueryWrapper<User> queryWrapper2 = new LambdaQueryWrapper<>();
  queryWrapper2.eq(User::getUname, user_bookDto.getUname());
  user user12 = userService.getOne(queryWrapper2);
  
  // 对象拷贝,将book和user拷贝到user_bookDto
  BeanUtils.copyProperties(book12, user_bookDto);
  BeanUtils.copyProperties(user12, user_bookDto);
  
  return user_bookDto;
 }
}

最后,在 controller 里调用 service 写好的方法即可

代码语言:javascript
复制
@PostMapping("/getub")
public Result<User_BookDto> getBook(@RequestBody User_BookDto user_bookDto) {
 user_bookDto = bookService.getDataByUserAndBook(user_bookDto);
 return Result.success("", user_bookDto);
}

在Spring Boot中,DTO(Data Transfer Object)是一种对象,用于在各个层之间传递数据。它们通常包含在应用程序中的控制器或服务中,并用于处理RESTful API或Web应用程序中的HTTP请求和响应数据。

DTO可以根据需要进行拓展,以满足不同应用程序的要求。以下是可以拓展DTO的一些内容:

  1. Validation 校验

Spring Boot DTO可以使用Bean Validation框架来校验请求数据的格式和有效性。例如,你可以通过在DTO字段上添加@NotBlank和@Email注解来确保输入的字符串不为空并符合电子邮件地址格式。

  1. Mapping 映射

使用映射技术可以将一个DTO对象映射到另一个DTO对象,或将DTO对象映射到数据库中的实体对象。例如,你可以使用MapStruct、Dozer或ModelMapper等框架来实现DTO映射功能。

  1. Builder 构建

使用Builder模式创建DTO对象可以减少代码的重复程度。通过使用Builder模式,你可以更简单地构建DTO对象,而不必手动编写大量的构造函数和setter方法。具体来说,你可以使用Lombok来自动生成DTO对象的构建器。

  1. Pagination 分页

在Web应用程序中,常常需要对大量数据进行分页显示。DTO可以包含信息,例如当前页码、页面大小、总数等,以支持分页实现。可以使用Spring Boot默认的Pageable对象、Mybatis PageHelper插件等来实现分页。

  1. Custom Formatting 自定义格式

有些情况下,DTO对象需要显示更复杂的数据结构,例如日期时间转换、数字格式化等。你可以使用Spring Boot中提供的自定义格式注解来实现DTO的自定义格式。例如,对于日期的处理需要使用@DateTimeFormat(pattern = "yyyy-MM-dd")注解进行标记。

  1. Conversion 转换

有时候,我们需要将DTO中的一些属性从一种类型转换成另一种类型,例如将字符串转换成数字,或将日期字符串转换为Date对象。你可以使用Spring Boot中的ConversionService来实现这种类型的转换。

  1. Localization 本地化

如果你的应用程序需要支持多个国家或地区的语言,那么DTO可以包含属性键、相应的值和区域设置信息,来支持不同的本地化需求。你可以使用Spring Boot的国际化支持来实现这个目标。

  1. DTO Projection 投影

DTO Projection允许我们选择DTO中的特定属性,并将这些属性映射到视图中。这可以减少不必要的数据传输和处理,从而提高应用程序的性能。你可以使用Spring Boot中的Projection注解来实现DTO的投影。

  1. HATEOAS支持

如果你正在构建RESTful API,则可以将DTO与HATEOAS(Hypertext As The Engine Of Application State)相结合,以允许客户端使用API返回的链接来导航应用程序。你可以使用Spring Boot中的Spring HATEOAS框架来实现这种类型的DTO扩展。

Spring Boot的DTO(数据传输对象)通常是一个POJO(简单Java对象),主要用于在不同层之间传递数据,以及将数据库实体转换为更易于处理的对象。DTO包含以下内容:

  1. 可读/可写属性:DTO包含用于表示数据的可读/可写属性,具有getter和setter方法。
  2. 静态工厂方法:DTO通常具有静态工厂方法,用于创建DTO对象。
  3. 序列化支持:DTO需要支持序列化和反序列化,以便它们可以在应用程序各个层之间进行传输。
  4. Bean验证注解:DTO可以包含Bean验证注解,用于在传输数据之前验证数据的完整性。
  5. 映射注解:DTO可以使用映射注解(例如@Mapper或@Mapping)将DTO属性映射到其他对象的属性。
  6. Spring validation支持:DTO可以使用Spring验证框架进行自定义验证。

总之,Spring Boot的DTO是具有可读/可写属性、静态工厂方法、序列化支持、Bean验证注解、映射注解和Spring验证支持的简单Java对象,用于在不同层之间传输数据。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Serverless HTTP 服务
Serverless HTTP 服务基于腾讯云 API 网关 和 Web Cloud Function(以下简称“Web Function”)建站云函数(云函数的一种类型)的产品能力,可以支持各种类型的 HTTP 服务开发,实现了 Serverless 与 Web 服务最优雅的结合。用户可以快速构建 Web 原生框架,把本地的 Express、Koa、Nextjs、Nuxtjs 等框架项目快速迁移到云端,同时也支持 Wordpress、Discuz Q 等现有应用模版一键快速创建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档