From 523ba9cc452242f11b4753122ed3e2ccabf763a4 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Thu, 9 Jan 2025 16:07:14 +0900 Subject: [PATCH] db --- .../security/config/SecurityConfig.java | 4 +- .../controller/api/BoardController.java | 15 ++++++- .../localhost/mapper/LocalBordMapper.java | 22 +++++----- .../localhost/service/LocalBordService.java | 41 ++++++++++--------- src/main/resources/application.yml | 25 ++++++----- src/main/resources/mapper/LocalBordMapper.xml | 22 ++++------ 6 files changed, 74 insertions(+), 55 deletions(-) diff --git a/src/main/java/io/company/localhost/common/security/config/SecurityConfig.java b/src/main/java/io/company/localhost/common/security/config/SecurityConfig.java index 3772b5e..2432122 100644 --- a/src/main/java/io/company/localhost/common/security/config/SecurityConfig.java +++ b/src/main/java/io/company/localhost/common/security/config/SecurityConfig.java @@ -76,7 +76,9 @@ public class SecurityConfig { http .securityMatcher("/api/**") // '/api/**' 경로에 대해서만 보안 적용 .authorizeHttpRequests(auth -> - auth.anyRequest().access(authorizationManager) // 모든 요청에 대해 권한 관리 + auth.requestMatchers("/api/board/general").permitAll() // 특정 엔드포인트 허용 + .anyRequest().authenticated() // 나머지 요청은 인증 필요 + //auth.anyRequest().access(authorizationManager) // 모든 요청에 대해 권한 관리 ) // 세션 관리 설정 .sessionManagement(session -> diff --git a/src/main/java/io/company/localhost/controller/api/BoardController.java b/src/main/java/io/company/localhost/controller/api/BoardController.java index ddcdffe..4b1888d 100644 --- a/src/main/java/io/company/localhost/controller/api/BoardController.java +++ b/src/main/java/io/company/localhost/controller/api/BoardController.java @@ -1,5 +1,7 @@ package io.company.localhost.controller.api; +import java.nio.charset.StandardCharsets; +import java.sql.Blob; import java.util.List; import java.util.Map; @@ -37,7 +39,18 @@ public class BoardController { @GetMapping("/general") public ApiResponse>> getGeneralPosts() { List> posts = boardService.getGeneralPosts(); - System.out.println(posts); + for (Map post : posts) { + Object content = post.get("content"); + if (content instanceof Blob) { + Blob blob = (Blob) content; + try { + post.put("content", new String(blob.getBytes(1, (int) blob.length()), StandardCharsets.UTF_8)); + } catch (Exception e) { + post.put("content", ""); // 변환 실패 시 기본 값 설정 + } + } + } + System.out.println(posts); return ApiResponse.ok(posts); } //게시물 작성 diff --git a/src/main/java/io/company/localhost/mapper/LocalBordMapper.java b/src/main/java/io/company/localhost/mapper/LocalBordMapper.java index 7b94975..d86c9a3 100644 --- a/src/main/java/io/company/localhost/mapper/LocalBordMapper.java +++ b/src/main/java/io/company/localhost/mapper/LocalBordMapper.java @@ -6,6 +6,8 @@ import java.util.Map; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import io.company.localhost.common.dto.MapDto; + @Mapper public interface LocalBordMapper { // 공지사항 조회 @@ -15,37 +17,37 @@ public interface LocalBordMapper { List> getGeneralPosts(); // 게시물 작성 - void createBoard(Map params); + void createBoard(MapDto map); // 첨부파일 저장 - void addAttachment(Map params); + void addAttachment(MapDto map); // 게시물 삭제 - void deleteBoard(Map params); + void deleteBoard(MapDto map); // 게시물 수정 - void updateBoard(Map params); + void updateBoard(MapDto map); // 게시물 좋아요/싫어요 추가 - void reactToBoard(Map params); + void reactToBoard(MapDto map); // 댓글 조회 List> getComments(int boardSeq); // 댓글/대댓글 작성 - void addCommentOrReply(Map params); + void addCommentOrReply(MapDto map); // 댓글/대댓글 수정 - void updateComment(Map params); + void updateComment(MapDto map); // 댓글/대댓글 삭제 - void deleteComment(Map params); + void deleteComment(MapDto map); // 게시물 비밀번호 확인 - boolean checkBoardPassword(Map params); + boolean checkBoardPassword(MapDto map); // 댓글 비밀번호 확인 - boolean checkCommentPassword(Map params); + boolean checkCommentPassword(MapDto map); // 비밀 게시판 여부 확인 boolean isSecretBoard(Long boardId); diff --git a/src/main/java/io/company/localhost/service/LocalBordService.java b/src/main/java/io/company/localhost/service/LocalBordService.java index 8adc20b..29490f0 100644 --- a/src/main/java/io/company/localhost/service/LocalBordService.java +++ b/src/main/java/io/company/localhost/service/LocalBordService.java @@ -5,6 +5,7 @@ import java.util.Map; import org.springframework.stereotype.Service; +import io.company.localhost.common.dto.MapDto; import io.company.localhost.mapper.LocalBordMapper; import lombok.RequiredArgsConstructor; @@ -21,48 +22,48 @@ public class LocalBordService { return boardMapper.getGeneralPosts(); } - public void createBoard(Map params) { - boardMapper.createBoard(params); + public void createBoard(MapDto map) { + boardMapper.createBoard(map); } - public void addAttachment(Map params) { - boardMapper.addAttachment(params); + public void addAttachment(MapDto map) { + boardMapper.addAttachment(map); } - public void deleteBoard(Map params) { - boardMapper.deleteBoard(params); + public void deleteBoard(MapDto map) { + boardMapper.deleteBoard(map); } - public void updateBoard(Map params) { - boardMapper.updateBoard(params); + public void updateBoard(MapDto map) { + boardMapper.updateBoard(map); } - public void reactToBoard(Map params) { - boardMapper.reactToBoard(params); + public void reactToBoard(MapDto map) { + boardMapper.reactToBoard(map); } public List> getComments(int boardSeq) { return boardMapper.getComments(boardSeq); } - public void addCommentOrReply(Map params) { - boardMapper.addCommentOrReply(params); + public void addCommentOrReply(MapDto map) { + boardMapper.addCommentOrReply(map); } - public void updateComment(Map params) { - boardMapper.updateComment(params); + public void updateComment(MapDto map) { + boardMapper.updateComment(map); } - public void deleteComment(Map params) { - boardMapper.deleteComment(params); + public void deleteComment(MapDto map) { + boardMapper.deleteComment(map); } - public boolean checkBoardPassword(Map params) { - return boardMapper.checkBoardPassword(params); + public boolean checkBoardPassword(MapDto map) { + return boardMapper.checkBoardPassword(map); } - public boolean checkCommentPassword(Map params) { - return boardMapper.checkCommentPassword(params); + public boolean checkCommentPassword(MapDto map) { + return boardMapper.checkCommentPassword(map); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 77d22c4..e5a0087 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -4,6 +4,14 @@ project: time-zone: Asia/Seoul spring: + datasource: + url: jdbc:mariadb://192.168.0.251:3306/localnet + username: root + password: host1234 + driver-class-name: org.mariadb.jdbc.Driver + devtools: + livereload: + enabled: true application: name: ${project.name} config: @@ -19,8 +27,8 @@ spring: mybatis: mapper-locations: classpath:mapper/**/*.xml -#상태 모니터링 (재시작,메모리 등등 관리해줌) -#localhost:10325/health 로 보면 됨 +# 상태 모니터링 (재시작, 메모리 등등 관리) +# localhost:10325/health 로 확인 가능 management: health: defaults: @@ -31,7 +39,7 @@ management: path-mapping: health: check exposure: - include: health,prometheus,metrics + include: health, prometheus, metrics endpoint: health: show-details: never @@ -45,16 +53,15 @@ management: server: max-uri-tags: 200 - server: shutdown: graceful port: 10325 tomcat: max-http-form-post-size: 20MB - max-connections: 1024 # default 8192 + max-connections: 1024 # 기본값 8192 threads: min-spare: 51 - max: 101 # default 200 + max: 101 # 기본값 200 servlet: encoding: charset: UTF-8 @@ -66,12 +73,11 @@ server: timeout: 300m cookie: path: / - # 쿠키 보안 + # 쿠키 보안 설정 http-only: true secure: true same-site: NONE -# logging logging: level: jdbc: @@ -82,5 +88,4 @@ logging: resultset: off connection: off io.company: DEBUG - io.company.localhost.mapper : off - + io.company.localhost.mapper: off diff --git a/src/main/resources/mapper/LocalBordMapper.xml b/src/main/resources/mapper/LocalBordMapper.xml index ef1d013..bf80815 100644 --- a/src/main/resources/mapper/LocalBordMapper.xml +++ b/src/main/resources/mapper/LocalBordMapper.xml @@ -1,6 +1,6 @@ - + - SELECT - LOCBRDSEQ AS id, - LOCBRDTTL AS title, - LOCBRDCON AS content, - LOCBRDRDT AS date, - LOCBRDTYP AS type, - MEMBERSEQ AS member, - LOCBRDCNT AS cnt, - LOCBRDCAT AS catagory - FROM localbord - WHERE b.LOCBRDTYP IN ('F', 'S') - ORDER BY b.LOCBRDRDT DESC + LOCBRDSEQ AS id, + LOCBRDTTL AS title, + LOCBRDCON AS content, + LOCBRDRDT AS date + FROM localbord + WHERE LOCBRDTYP IN ('F', 'S') + ORDER BY LOCBRDRDT DESC