본문 바로가기

Back-End53

ajax 통신시 URI로 이메일 문자열 보낼시 dot(.) 이하문자삭제 문제 바쁘신분들을 위한 문제 해결방법 // PathVariable로 받는 변수 뒤에 :.+ 를 붙인다. @GetMapping(value = "/signUp/email/{email:.+}") 회원가입 기능 중 이메일 중복확인 기능을 추가하였으며 중복확인을 위해서 데이터통신을 위해 ResponseBody를 선언하여 확인 후 존재여부 결과를 보내주는 처리과정을 설계하고 진행했습니다. 하지만 클라이언트에서 이메일 형식의 문자열을 보낼 경우 2가지 상황에서의 문제가 발생했다. 1. produces 설정 @GetMapping(value = "/signUp/email/{email}", produces = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public ResponseEntity is.. 2021. 3. 25.
MyBatis) MySQL로 Insert한 데이터의 자동생성된 pk 값 가져오기. 데이터베이스 중에서 MySQL 처럼 PK값을 자동생성해서 사용하는 DB가 있습니다. 주로 Insert를 했을 떄 자동생성되어 1,2,3,4,5,6 이런식으로 값이 생성되는데 insert를 했을 경우 해당 데이터를 즉시 조회하면 정확한 pk값을 추출해 낼 수 없습니다. pk값을 추려내려는 방법은 구글링을 해보면 다양합니다. max() 를 사용하는 방법이나 last_insert_id() 를 사용하는 방법 등등이 있는데 오늘은 MyBatis를 사용해서 공부하는 도중에 발견한 새로운 방법을 써보려고 합니다. 방법은 2가지로 Boot에서 MyBatis를 사용할 때 Annotation으로 쓰는방식과 Spring에서 XML 방식으로 나눠서 보여드리겠습니다. // Boot ( Annotation ) @Insert("i.. 2021. 3. 22.
MyBatis로 DB 칼럼 과 Java Property mapping 방법( XML, Annotation) Spring은 Spring Boot의 JPA처럼 서버구동시 hibernate가 자동으로 연관관계매핑을 시켜주지 않는다. Spring Boot 또한 JPA를 주입하지 않으면 자동으로 테이블이 매핑되지 않고 자동으로 생성되지도 않는다. 실무에서도 쓰이는 코드의 형식을 알려주는 주제로 만들어진 강의영상을 보았다. 해당 영상은 Boot의 MyBatis를 활용하여 XML방식이 아닌 SQL Mapper를 Annotation 방식으로 만들었는데. Spring에서도 다른코드지만 같은데이터를 가져다 줄 수 있는 코드가 있을거같아서 직접 구현을 해보았다. // Boot ( Annotation 방식 ) @Data public class Company { // 3개의 프로퍼티를 갖는 클래스 생성 private int id; .. 2021. 3. 22.
Git ) rebase -i 프로젝트를 할 때나 공부할 때 항상 branch를 따서 진행하는 습관을 들이고 있다. 사실 리베이스는 주로 협업할 때 많이 쓰이는 편이며, 현재의 나는 쓸 일은 없지만 그래도 알고 있는게 좋은 명령이 이므로 작성을 해봅니다.. * 리베이스란? 리베이스를 가지고 2개의 역할을 할수 있다고 알고 있다. 1. 깃의 베이스를 변경한다 (?) 2. 커밋을 합친다. 1번의 경우 예를 들면 2/1일의 master 브랜치에서 따온 A 브랜치를 작업을 했으나 시간이 오래 흘러서 당일 2/10일의 master 브랜치에서 따온것 처럼 베이스를 옮기는 작업을 하는 경우 2번의 경우 Git에 push를 하게되면 history가 남는데 그때 단 하나의 로그를 남겨서 사용중인 git 의 history를 좀더 깔끔하게 남겨두고자 할.. 2021. 3. 20.
Security OAuth 초기 설정 및 간단 설명 프로젝트에 소셜로그인 관련 설정을 하기 이전에 사용하고자 하는 서비스의 공식홈페이지에서 OAuth 관련 설정을 하기위해 프로젝트를 등록해야한다. 해당 과정은 생략하고 프로젝트에서 설정하는 과정만 추가. 1. build.gradle 파일에 OAuth 관련 라이브러리를 추가해야한다. 만약 프로젝트 생성시 이미 추가를 했을 경우 할 필요 없다. // build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' } 2. 추가 이후 application.properties 설정을 변경해야한다. 여러개의 OAuth 를 사용한다면 별도의 설정파일을 생성하는 것이 좋다. 설정 파일의 이름은 "a.. 2021. 3. 11.
(2) QuerydslRepositorySupport - Tuple 활용 동일한 엔티티 객체 단위의 데이터를 가져올 떄는 크게 상관이 없지만 각각의 다른 타입의 데이터를 추출할 때 많이 사용된다. Tuple을 이용한 간단한 예제를 작성해서 어떤식으로 작성을 해서 사용하는지 익혀놓는다. @Override public Board search() { //1. Q도메인 생성 QBoard board = QBoard.board; QReply reply = QReply.reply; QMember member = QMember.member; // 2. from 절 설정 JPQLQuery jpqlQuery = from(board); // 3. join jpqlQuery.leftJoin(member).on(board.writer.eq(member); jpqlQuery.leftJoin(reply.. 2021. 3. 9.