航行10日目
Java Spring 3週目レッスン
1.設計API
2.Repository設定の注意事項
3.サービス設定の注意事項
4.コントローラ設定の注意事項
5.3週間の課題と24時間ごとのデータ初期化方法
は、必要な機能を特定し、必要に応じて対応するAPI を設計すると同じURLであっても、方法が異なると他のウィンドウ となる.逆転 とは何かを明確にする
ex)
注記を作成するときは、作成した注記を返す必要があります.
コメントを表示するには、生成されたコメントのリストを指定する必要があります.
コメントの変更と削除にはid値が必要です.
をインポートできない場合はalt+enterをインポートします. オブジェクトクラスの必須Import-@NorargConstructor(基本ジェネレータの作成),@Getter(情報の受信,ライフサイクル),@Entity(テーブルとテーブル) タイムスタンプの必須Import-@MappedSuperClass(継承されたクラスを自動的に生成する場合と変更時間をカラーで表示する場合)、@EntityListener(変更時に自動的に変更)、PublicとClassの間を抽象的に継承します.(リストを作成できません) requestDtoに必要なImport-@Getter(テーブルに直接触れないように作成されているため、値を受け入れてループします),@RequiredArgConstructor(この権限を持つ) Repositoryに必要なImport-.Javaファイルではなくインタフェースファイルとして作成する必要があります.Jpa Repositoryを継承し、findAllなどの便利な機能を使用したり、<>の材料を使用したり、リストのソート基準を追加したりすることができます.
ex) APIはメソッドを設定せず、すべてサービスで作成して使用します.オブジェクトクラスから受信値の設定-サービスメソッドの設定-APIでメソッド を実行@RequiredArgConstructor(ライセンス),@Service(これはサービス)
3.private final repository名称インポート情報 を入力
private finalリポジトリ名、サービス名を入力して情報をインポート
2.@RestController、@RequiredArgConstructor(承認)
main.javaデータ初期化設定方法 リポジトリからデータを消去する変数 を設定する.
1.設計API
2.Repository設定の注意事項
3.サービス設定の注意事項
4.コントローラ設定の注意事項
5.3週間の課題と24時間ごとのデータ初期化方法
1.設計API
ex)
注記を作成するときは、作成した注記を返す必要があります.
コメントを表示するには、生成されたコメントのリストを指定する必要があります.
コメントの変更と削除にはid値が必要です.
2.Repository設定の注意事項
ex)
//findALL 다찾아주고 ByModifiedAtBetween지정시간 사이의 ByOrderBy 정렬시켜라 ModifiedAt 시간을 기준으로 Desc 내림차순 (최근순) start,end 값은 등록한 시간으로 부터 24시간이내의 것으로 설정함
List<Memo> findAllByModifiedAtBetweenOrderByModifiedAtDesc(LocalDateTime start, LocalDateTime end);
3.サービス設定の注意事項
3.private final repository名称インポート情報
4.コントローラ設定の注意事項
2.@RestController、@RequiredArgConstructor(承認)
5.3週ごとの問題コードと24時間ごとのデータ初期化方法
main.java
package com.sparta.week03.domain;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;
@NoArgsConstructor // 기본생성자를 만듭니다.
@Getter
@Entity // 테이블과 연계됨을 스프링에게 알려줍니다.
public class Memo extends Timestamped { // 생성,수정 시간을 자동으로 만들어줍니다.
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long id;
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String contents;
public Memo(String username, String contents) {
this.username = username;
this.contents = contents;
}
public Memo(MemoRequestDto requestDto) {
this.username = requestDto.getUsername();
this.contents = requestDto.getContents();
}
public void update(MemoRequestDto requestDto) {
this.username = requestDto.getUsername();
this.contents = requestDto.getContents();
}
}
Repository.interfacepackage com.sparta.week03.domain;
import org.apache.tomcat.jni.Local;
import org.springframework.data.jpa.repository.JpaRepository;
import java.time.LocalDateTime;
import java.util.List;
public interface MemoRepository extends JpaRepository<Memo, Long> {
//findALL 다찾아주고 ByOrderBy 정렬시켜라 ModifiedAt 시간을 기준으로 Desc 내림차순 (최근순)
List<Memo> findAllByModifiedAtBetweenOrderByModifiedAtDesc(LocalDateTime start, LocalDateTime end);
}
RequestDtopackage com.sparta.week03.domain;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.springframework.stereotype.Service;
@Getter
@RequiredArgsConstructor
public class MemoRequestDto {
private final String username;
private final String contents;
}
Timestampedpackage com.sparta.week03.domain;
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@Getter
@MappedSuperclass // Entity가 자동으로 컬럼으로 인식합니다.
@EntityListeners(AuditingEntityListener.class) // 생성/변경 시간을 자동으로 업데이트합니다.
public abstract class Timestamped {
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime modifiedAt;
}
Servicepackage com.sparta.week03.service;
import com.sparta.week03.domain.Memo;
import com.sparta.week03.domain.MemoRepository;
import com.sparta.week03.domain.MemoRequestDto;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
@RequiredArgsConstructor
@Service
public class MemoService {
private final MemoRepository memoRepository;
@Transactional
public Long update(Long id, MemoRequestDto requestDto) {
Memo memo = memoRepository.findById(id).orElseThrow(
() -> new IllegalArgumentException("아이디가 존재하지 않습니다.")
);
memo.update(requestDto);
return id;
}
}
Controllerpackage com.sparta.week03.controller;
import com.sparta.week03.domain.Memo;
import com.sparta.week03.domain.MemoRepository;
import com.sparta.week03.domain.MemoRequestDto;
import com.sparta.week03.service.MemoService;
import lombok.RequiredArgsConstructor;
import org.apache.tomcat.jni.Local;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
@RestController
@RequiredArgsConstructor
public class MemoController {
private final MemoRepository memoRepository;
private final MemoService memoService;
@PostMapping("/api/memos")
public Memo createMemo(@RequestBody MemoRequestDto requestDto){
Memo memo = new Memo(requestDto);
return memoRepository.save(memo);
}
@GetMapping("/api/memos")
public List<Memo> readMemo() {
LocalDateTime now = LocalDateTime.now();
LocalDateTime yesterday = LocalDateTime.now().minusDays(1);
return memoRepository.findAllByModifiedAtBetweenOrderByModifiedAtDesc(yesterday, now);
}
@DeleteMapping("/api/memos/{id}")
public Long deleteMemo(@PathVariable Long id){
memoRepository.deleteById(id);
return id;
}
@PutMapping("/api/memos/{id}")
public Long updateMemo(@PathVariable Long id, @RequestBody MemoRequestDto requestDto) {
memoService.update(id, requestDto);
return id;
}
}
List<Memo> findAllByModifiedAtBetweenOrderByModifiedAtDesc(LocalDateTime start, LocalDateTime end);
2.コントロールで開始と終了の間隔を設定した後、変数を代入する LocalDateTime now = LocalDateTime.now();
LocalDateTime yesterday = LocalDateTime.now().minusDays(1);
return memoRepository.findAllByModifiedAtBetweenOrderByModifiedAtDesc(yesterday, now);
Reference
この問題について(航行10日目), 我々は、より多くの情報をここで見つけました https://velog.io/@wotjd4863/항해-10일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol