最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

springboot第1集:由springboot的dto拓展的內(nèi)容

2023-03-26 12:55 作者:算法貓叔  | 我要投稿

DTO:?Data Transfer Object. 通常是在 OpenApi . 即此項目與其他外界項目交互時使用的對象.

在Spring Boot應用程序中,數(shù)據(jù)傳輸對象(DTO)最常用于表示業(yè)務模型對象或從應用程序或其服務端點傳遞的數(shù)據(jù)模型對象。 DTO將這些模型對象中的數(shù)據(jù)轉換為一種便于傳輸和有效處理的格式。

通常情況下,DTO具有以下幾個作用:

  1. 將業(yè)務模型對象的詳細信息隱藏起來,以便在應用程序的客戶端和服務端之間進行數(shù)據(jù)傳輸。

  2. 將多個模型對象合并為一個DTO對象,以便簡化數(shù)據(jù)交換和處理過程。

  3. 通過將某些模型對象屬性的轉換或計算封裝到DTO中,可以抽象化服務端點之間的數(shù)據(jù)處理邏輯。

  4. 最終,提供一個整體的清晰,不分雙方,簡單的數(shù)據(jù)傳輸結構。

  5. 同樣,DTO在優(yōu)化性能方面也起到了很大的作用。

而Spring Boot可以通過各種注釋來高效地創(chuàng)建和使用DTO,這些注釋包括@Data, @Getter, @Setter@NoArgsConstructor@AllArgsConstructor等。通過這些注釋,可以自動化DTO中的許多任務,這有效地簡化了DTO的創(chuàng)建和維護。

@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里面實現(xiàn)

public?interface?BookService?extends?IService<Book>?{
?User_BookDto?getDataByUserAndBook(User_BookDto?user_bookDto);
}

實現(xiàn)service

根據(jù)前端傳過來的數(shù)據(jù)獲取這兩個表中的所有信息,然后使用對象拷貝,將兩個表中的數(shù)據(jù)對象拷貝到 dto,最后返回 dto 即可

@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 寫好的方法即可

@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)是一種對象,用于在各個層之間傳遞數(shù)據(jù)。它們通常包含在應用程序中的控制器或服務中,并用于處理RESTful API或Web應用程序中的HTTP請求和響應數(shù)據(jù)。

DTO可以根據(jù)需要進行拓展,以滿足不同應用程序的要求。以下是可以拓展DTO的一些內(nèi)容:

  1. Validation 校驗

Spring Boot DTO可以使用Bean Validation框架來校驗請求數(shù)據(jù)的格式和有效性。例如,你可以通過在DTO字段上添加@NotBlank和@Email注解來確保輸入的字符串不為空并符合電子郵件地址格式。

  1. Mapping 映射

使用映射技術可以將一個DTO對象映射到另一個DTO對象,或將DTO對象映射到數(shù)據(jù)庫中的實體對象。例如,你可以使用MapStruct、Dozer或ModelMapper等框架來實現(xiàn)DTO映射功能。

  1. Builder 構建

使用Builder模式創(chuàng)建DTO對象可以減少代碼的重復程度。通過使用Builder模式,你可以更簡單地構建DTO對象,而不必手動編寫大量的構造函數(shù)和setter方法。具體來說,你可以使用Lombok來自動生成DTO對象的構建器。

  1. Pagination 分頁

在Web應用程序中,常常需要對大量數(shù)據(jù)進行分頁顯示。DTO可以包含信息,例如當前頁碼、頁面大小、總數(shù)等,以支持分頁實現(xiàn)??梢允褂?code>Spring Boot默認的Pageable對象、Mybatis PageHelper插件等來實現(xiàn)分頁。

  1. Custom Formatting 自定義格式

有些情況下,DTO對象需要顯示更復雜的數(shù)據(jù)結構,例如日期時間轉換、數(shù)字格式化等。你可以使用Spring Boot中提供的自定義格式注解來實現(xiàn)DTO的自定義格式。 例如,對于日期的處理需要使用@DateTimeFormat(pattern = "yyyy-MM-dd")注解進行標記。

  1. Conversion 轉換

有時候,我們需要將DTO中的一些屬性從一種類型轉換成另一種類型,例如將字符串轉換成數(shù)字,或將日期字符串轉換為Date對象。你可以使用Spring Boot中的ConversionService來實現(xiàn)這種類型的轉換。

  1. Localization 本地化

如果你的應用程序需要支持多個國家或地區(qū)的語言,那么DTO可以包含屬性鍵、相應的值和區(qū)域設置信息,來支持不同的本地化需求。你可以使用Spring Boot的國際化支持來實現(xiàn)這個目標。

  1. DTO Projection 投影

DTO Projection允許我們選擇DTO中的特定屬性,并將這些屬性映射到視圖中。這可以減少不必要的數(shù)據(jù)傳輸和處理,從而提高應用程序的性能。你可以使用Spring Boot中的Projection注解來實現(xiàn)DTO的投影。

  1. HATEOAS支持

如果你正在構建RESTful API,則可以將DTO與HATEOAS(Hypertext As The Engine Of Application State)相結合,以允許客戶端使用API返回的鏈接來導航應用程序。你可以使用Spring Boot中的Spring HATEOAS框架來實現(xiàn)這種類型的DTO擴展。

Spring Boot的DTO(數(shù)據(jù)傳輸對象)通常是一個POJO(簡單Java對象),主要用于在不同層之間傳遞數(shù)據(jù),以及將數(shù)據(jù)庫實體轉換為更易于處理的對象。DTO包含以下內(nèi)容:

  1. 可讀/可寫屬性:DTO包含用于表示數(shù)據(jù)的可讀/可寫屬性,具有getter和setter方法。

  2. 靜態(tài)工廠方法:DTO通常具有靜態(tài)工廠方法,用于創(chuàng)建DTO對象。

  3. 序列化支持:DTO需要支持序列化和反序列化,以便它們可以在應用程序各個層之間進行傳輸。

  4. Bean驗證注解:DTO可以包含Bean驗證注解,用于在傳輸數(shù)據(jù)之前驗證數(shù)據(jù)的完整性。

  5. 映射注解:DTO可以使用映射注解(例如@Mapper或@Mapping)將DTO屬性映射到其他對象的屬性。

  6. Spring validation支持:DTO可以使用Spring驗證框架進行自定義驗證。

總之,Spring Boot的DTO是具有可讀/可寫屬性、靜態(tài)工廠方法、序列化支持、Bean驗證注解、映射注解和Spring驗證支持的簡單Java對象,用于在不同層之間傳輸數(shù)據(jù)。

springboot第1集:由springboot的dto拓展的內(nèi)容的評論 (共 條)

分享到微博請遵守國家法律
长乐市| 额济纳旗| 延庆县| 呼玛县| 棋牌| 个旧市| 黎城县| 龙州县| 冀州市| 怀仁县| 丰原市| 普安县| 武川县| 静安区| 安康市| 吴堡县| 莫力| 洪江市| 开化县| 安仁县| 高密市| 遂溪县| 阿坝| 垦利县| 东辽县| 商丘市| 锡林浩特市| 临清市| 宿迁市| 珲春市| 岫岩| 新疆| 邢台县| 故城县| 望奎县| 墨脱县| 若尔盖县| 汝南县| 卓尼县| 中方县| 汉阴县|