본문 바로가기

Back-End/Spring22

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.
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.
(1) QueryRepositorySupport 메모 용도로 사용되는 포스팅입니다. 우선 기본적으로 기존에 사용하던 Querydsl 설정이 적용되어 있어야 한다. 일반적으로 기본적인 CRUD 는 QuerydslPredicateExecutor를 이용해서 사용이 가능하다. like, between, gt 등등 여러가지를 사용해서 쿼리를 구성할수있는데 left outer join , inner join같은 조인이나 fetch를 사용할 수 없는 한계가 있으므로 JPQL로 검색하기위해서 JPQLQuery를 사용하여 처리할수있게 QuerydslRepositorySupport 라는 클래스를 상속해서 사용해야한다. 이것은 Querydsl 라이브러리를 직접 이용해서 구현할때 사용한다. 1. 인터페이스 와 해당 인터페이스를 구현할 클래스를 생성합니다. 쿼리 메서드나 @.. 2021. 3. 9.