Spring #14 - Repository

김형우·2022년 3월 7일
0

Spring

목록 보기
15/19

Repository

1. boot20220228/Boot20220228Application.java

  • 생성
  • 실행파일
  1. 저장소 (Repository) 위치 지정
    : @EnableMongoRepositories(basePackages = { "com.example.repository" })
    : (중요) 새로운 패키지를 생성하면 항상 실행파일에 등록 해 주어야한다.

2. repository/BoardRepository.java

  • 생성
  1. extend로 확장해서 사용함
  2. Mongo에서 제공하는 Repository 사용
    : extends MongoRepository
  3. extends MongoRepository<Board, Long>
    : implement가 아니라 extends
    : MongoRepository<사용할entity명, 기본키(_id)타입>
@Repository
public interface BoardRepository extends MongoRepository<Board, Long> {
    // 설계만
    // extends MongoRepository 상속받아서 써라
    // extends MongoRepository<entity, 기본키>
    // 기본적인 CRUD가 이미 다 만들어진 상태
}

3. entity/Board.java

  • entity
  • 변수들은 정의 해 줘야함
@Getter
@Setter
@NoArgsConstructor
@ToString
@Document(collection = "board4")
public class Board {
    @Id
    private long no = 0L;

    private String title;

    private String content;

    private String writer;

    private long hit = 1L;

    private Date regdate;

}

4. controller/BoardController.java

  • 생성
  • @Controller
  1. 저장소를 사용하기위해 객체를 생성한다.
    : @Autowired
    : BoardRepository boardRepository;
  2. MongoDB에서 제공하는 Repository를 사용한다.
    : 다있음. 편함.
@Controller
@RequestMapping(value = "/board")
public class BoardController {

    // 서비스 => mybatis => 설계(DB) + 구현(DBImpl:SQL문)
    // 저장소 => jpa, hibernate => 설계 + 구현(SQL:native)

    // 저장소 객체생성
    @Autowired
    BoardRepository boardRepository;

    @Autowired
    SequenceService sequenceService;

    // 목록
    @GetMapping(value = "/selectlist")
    public String selectlistGET(Model model) {
        List<Board> list = boardRepository.findAll();
        model.addAttribute("list", list);

        return "board/selectlist";
    }

	// 글 추가 화면불러오기
    @GetMapping(value = "/insert")
    public String insertGET() {
        return "board/insert";
    }

	// 글 추가
    @PostMapping(value = "/insert")
    public String insertPOST(
            Model model,
            @ModelAttribute Board board) {
        // System.out.println("board.toString() ===> " + board.toString());
        // @ModelAttribute Board board = jsp로부터 입력받은 값

        board.setNo(sequenceService.generationSequence("SEQ_BOARD4_NO"));
        board.setRegdate(new Date());

        Board result = boardRepository.save(board);
        System.out.println("result ===> " + result);
        if (result != null) {
            model.addAttribute("msg", "글쓰기 완료");
            model.addAttribute("url", "/board/selectlist");
            return "alert";
        }
        model.addAttribute("msg", "글쓰기 실패");
        model.addAttribute("url", "/board/insert");
        return "alert";
    }
}
profile
The best

0개의 댓글