2. 기능 구현 하기
JPA를 사용하기 위해 Mybatis를 사용하지 않았습니다.
게시판 글 연결 하기
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/board
serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=532077
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
Java
복사
폴더 구조
Controller
ㄴ TestController (HTTP 연결)
Entity
ㄴ TestEntity (데이터 베이스 직접 연결)
Repository
ㄴ TestRepository (데이터를 저장하고 불러오는 로직 담당)
Controller 구성
@Controller
public class TestController {
private static Logger logger = LoggerFactory.getLogger(TestController.class);
@Autowired
TestRepository testRepository;
@GetMapping("/")
public String Hello(Model model) {
model.addAttribute("list", testRepository.findAll());
return "index";
}
@GetMapping("/write")
public String Write(Model model) {
return "write";
}
@ResponseBody
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String Register(Model model, HttpServletRequest request){
String Title = request.getParameter("title");
String Content = request.getParameter("content");
String Author = request.getParameter("name");
TestEntity entity = new TestEntity(Title, Content, Author);
testRepository.save(entity);
return "Y";
}
@GetMapping("/board/{boardId}")
public String Content(Model model, @PathVariable String boardId) {
long ContentId = Long.parseLong(boardId);
String Content = testRepository.findTestEntityById(ContentId).getContent();
model.addAttribute("contnet", Content);
return "board";
}
}
Java
복사
Repository 구성
@Repository
public interface TestRepository extends JpaRepository<TestEntity, Long> {
public TestEntity findTestEntityById(long id);
}
Java
복사
Entity 구성
@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(name = "boardlist")
public class TestEntity {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String title;
private String content;
private String author;
private LocalDateTime createdAt;
@PrePersist
public void prePersist() {
this.createdAt = LocalDateTime.now();
}
public TestEntity(String title, String content, String author) {
this.title = title;
this.content = content;
this.author = author;
}
}
Java
복사
어노테이션 | 역활 |
@PrePersist | repository에서 .save() 될때 호출 |
@Getter | 내부의 멤버변수에 저장된 값을 외부로 리턴. |
@Setter | 외부로부터 데이터를 전달받아 멤버변수에 저장. (Return 값이 없음) |
@NoArgsConstructor | 어노테이션은 파라미터가 없는 디폴트 생성자를 자동으로 생성한다. |