Repository
1. boot20220228/Boot20220228Application.java
- 저장소 (Repository) 위치 지정
: @EnableMongoRepositories(basePackages = { "com.example.repository" })
: (중요) 새로운 패키지를 생성하면 항상 실행파일에 등록 해 주어야한다.
2. repository/BoardRepository.java
- extend로 확장해서 사용함
- Mongo에서 제공하는 Repository 사용
: extends MongoRepository
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
@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
- 저장소를 사용하기위해 객체를 생성한다.
: @Autowired
: BoardRepository boardRepository;
- 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";
}
}