[英]Struts 2: Incorrect/misspelled getter and setter name of a field
[英]Spring boot - How to Write Setter and Getter field Name Dynamic way
我正在從數據庫中獲取最近 6 個月的記錄。 基於當前日期。 當我返回它時,我將它存儲到 JSONArray 中 - 我收到序列化錯誤,因為沒有 Getter 和 setter。 我的數據看起來像這樣 -
[
{
"userName": "Sita",
"userEmail": "sita@gmail.com",
"January": 3,
"February": 10,
"March": 1,
"April": 3,
"May": 32,
"June": 31
},
{
"userName": "Gita",
"userEmail": "gita@gmail.com",
"January": 3,
"February": 10,
"March": 1,
"April": 3,
"May": 32,
"June": 31
},
{
"userName": "Ram",
"userEmail": "ram@gmail.com",
"January": 3,
"February": 10,
"March": 1,
"April": 3,
"May": 32,
"June": 31
}
]
現在的問題是 --> 月份名稱可以動態出現。 如何將它設置到我的 setter Getter Method 中,並從 ServiceImp 調用它 --> controller
我不能這樣-
@Data
@NoArgsConstructor
@AllArgsConstructor
private String userName;
private String userName;
private String January;
private String February;
private String March;
private String April;
private String May;
private String June;
private String July;
private String August;
private String September;
private String October;
private String November;
private String December;
這不是好方法。 我嘗試了很多方法。 你能幫我如何實現這一點,並寫入 serviceImpl 和 Controller 文件。 我是這個 spring 引導的新手,任何幫助都會得到幫助。
如果我們保持這樣,我怎么map它到serviceImp中的特定月份? 請問可以提供代碼嗎? 我該怎么做 map 呢。 就像如果我得到這樣的 JSONObject -
for (int i = 0; i < filterUser.length(); i++) {
JSONObject jsb = (JSONObject) filterUser.get(i);
jsb.keySet().forEach(keyStr -> {
// Here Key is January, and jsb.get(keyStr) -> January data
// How can I set the setter and getter here ?
// });
// filteredTotalFeedbackData.put(i, jsb);
}
我假設的事情很少,因為根據您的詳細信息,問題有些不清楚。
您有一個數據庫,其中包含您在問題中提到的記錄。
[
{
"userName": "Sita",
"userEmail": "sita@gmail.com",
"January": 3,
"February": 10,
"March": 1,
"April": 3,
"May": 32,
"June": 31
}
]
Its basically Json Object contained inside Json Array, So, as per Java you will have a Entity class to hold the values and that Entity class will be contained inside a List.
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
class Details{
private String userName;
private String January;
private String February;
private String March;
private String April;
private String May;
private String June;
private String July;
private String August;
private String September;
private String October;
private String November;
private String December;
}
從數據庫中獲取數據后的結果將類似於,
List<Details> result = //database call (Repository call);
現在,這一切都將發生在某個服務 class 中,我們稱該服務 class 為 DetailsS DetailsServiceImpl.java
存儲庫
@Repository
interface DetailsRepository extends JpaRepository<Details,Long>{
}
服務
@Service
@RequiredArgsConstructor
class DetailsServiceImpl{
private final DetailsRepository detailsRepository;
public List<DetailsDto> getLastSixMonthsData(){
//List<Details> result = //detailsRepository database call;
//either use Modelmapper to copy the data from entity to DTO
//BeanUtils can also be used.
return //Copied ArrayList<DetailsDto>(); which will be populated by ModelMapper or BeanUtils.
}
}
DTO這個DTO
負責將數據渲染到controller
,或者您可以說將可representable
的數據發送到controller
。
@Data
//@JsonInclude(JsonInclude.Include.NON_NULL) can be used if you dont want non-null values in your response.
class DetailsDto{
private String userName;
private String January;
private String February;
private String March;
private String April;
private String May;
private String June;
private String July;
private String August;
private String September;
private String October;
private String November;
private String December;
}
休息控制器
@RestController
@RequiredArgsConstructor
class DetailsController{
private final DetailsServiceImpl detailsService;
public ResponseEntity<List<DetailsDto>> getDetailsLastSixMonths(){
return new ResponseEntity<List<DetailsDto>>(detailsService.getLastSixMonthsData(), HttpStatus.OK);
}
}
要遵循的鏈接如何使用 BeanUtils.copyProperties?
Copy one class properties to another class, with set the field to map in java Spring boot
無需使用JSONObject
並對每個object
操作。 希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.