728x90
반응형
https://github.com/rcaninhu/springboot3-demo
샘플샘플 스프링부트3 데모~
springboot3 + kotlin + JPA
개발환경(?) 주변에 필요한건 도커로 구성 지금은 mysql8.0 하나 필요에 의해서 나중에 추가추가 하고
간단하게 springboot kotlin 데모 샘플 코드~
목적이 없으면 심심하니까 게시판(?) 정도 만드는걸 목표로?
목표 1. 글 등록
목표2. 글 목록
1. 글등록
제목, 내용, 작성일
@Entity
class Board(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
val active: Boolean? = true,
@Column(updatable = false)
var createdDate: LocalDate? = LocalDate.now(),
@Column(length = 200)
val title: String,
@Column(length = 1000)
val contents: String,
)
살아 있는 글인지 아닌지 체크와 글의 아이디 추가 된형태?
title은 200자 contents는 1000자 로 작성
컨트롤러에 글 등록 API를 만들어 보면..
@RestController
@RequestMapping("/api/board")
class BoardController(
private val boardService: BoardService
) {
@PostMapping("")
fun saveBoard(
@RequestBody boardSaveRequest: BoardSaveRequest
): ResponseEntity<BoardSaveResponse> =
ResponseEntity
.status(HttpStatus.CREATED)
.body(boardService.saveBoard(boardSaveRequest))
}
간단하게 저장.
벨리데이션 작성자 등등 처리는 아니고 간단하게 글제목 글내용 작성하도록.
BoardSaveRequest는
// 글등록 요청
data class BoardSaveRequest(
val title: String,
val contents: String,
)
// 글등록 결과 응답
data class BoardSaveResponse(
var id: Long?,
val title: String,
)
서비스 코드는
@Service
class BoardService(
private val boardRepository: BoardRepository
) {
@Transactional
fun saveBoard(
boardSaveRequest: BoardSaveRequest
): BoardSaveResponse = boardSaveRequest.let {
Board(
title = it.title,
contents = it.contents
).run {
boardRepository.save(this)
}.let {
BoardSaveResponse(
id = it.id,
title = it.title
)
}
}
}
글등록이 완성되었으니 글 목록 조회 조회 조건을 제목을 할수 있도록 ~
## 컨트롤러에 추가.
@GetMapping("")
fun searchBoard(boardSearchRequest: BoardSearchRequest): ResponseEntity<List<BoardSearchResponse>> =
boardService.searchBoard(boardSearchRequest).let {
if (it.isNotEmpty()) {
ResponseEntity.ok(it)
} else {
ResponseEntity.noContent().build()
}
}
## 서비스에 추가.
@Transactional(readOnly = true)
fun searchBoard(
boardSearchRequest: BoardSearchRequest
): List<BoardSearchResponse> =
boardRepository.findByActiveAndTitleStartsWith(titleStartWidth = boardSearchRequest.title)
.map {
BoardSearchResponse(
id = it.id,
writeDate = it.createdDate!!.format(DateTimeFormatter.ISO_DATE),
title = it.title,
contents = it.contents
)
}
잘 될까 저장과 목록이...
저장이 되었으니 확인. 목록 조회를 해볼까
조회!
제목으로 시작하느 글을 조회 했다. 조금더 글을 넣어 볼까...
제목으로 시작되는 글들이 조회가 되었다~~
다음은 수정, 삭제, 그리고 페이징 ~~~
728x90
반응형
SMALL
'개발 > 개발이야기' 카테고리의 다른 글
Springboot JPA kotlin 4. 라이브러리 체크 OWASP 활용 (0) | 2023.02.25 |
---|---|
Springboot JPA kotlin 3. swagger / 스웨거 (0) | 2023.02.23 |
Springboot JPA kotlin 2. 글 수정, 글 삭제, 글 상세 (0) | 2023.02.11 |
Docker ! 개발환경 구축 - 2 (0) | 2023.02.11 |
Docker ! 개발환경 구축 - 1 (0) | 2023.02.11 |
댓글