분류 전체보기 954

21. 프로젝션 Dto

QueryDSL로 프로젝션으로 Dto를 직접 받는 방법은 크게 3가지가 있다. 직접 받는다기 보다는 바로 받는다. 가 맞는 것 같다. setter가 활용되는 bean방식 필드에 직접 주입해주는 fields 방식 생성자 방식 먼저 bean 방식부터. 그 전에, jpql방식 @Test public void findDtoBytJPQL(){ List result = em.createQuery("select new study.querydsl.dto.MemberDto(m.username, m.age)" + " from Member m", MemberDto.class) .getResultList(); for (MemberDto memberDto : result) { System.out.println("memberDt..

NavLink, Link

import React from "react"; import { Link,Outlet } from "react-router-dom"; const Articles = () => { return ( 게시글 1 게시글 2 게시글 3 ); }; export default Articles; Link 먼저. 앞서 봐왔듯 그 Link임. 그냥 to={'경로'} 해서 보낼 수 있는. 그 다음 NavLink NavLink는 그냥 Link에 정말 간단한 기능 추가시킨 건데, 바로 자신의 경로가 선택되었다면 저 Link(html요소 상에서는 a태그)에 active라는 클래스를 붙여주는 거임. 그냥 ul>li>a.active 라던지 해서 scss에서 활용해서 쓰면 됨.

React 2023.11.30

useNavigate, Navigate

이거는 네비게이션, 정확히는 경로를 알려준다기 보다는 경로까지 가게 해주는 훅임. import React from 'react' import { Outlet, useNavigate } from 'react-router' const Layout = () => { const navigate = useNavigate(); const goBack = ()=>{ navigate(-1); } const goArticles = ()=>{ navigate('/articles', {replace:true}); } return ( 뒤로가기 Articles로 가기 ) } export default Layout 그냥 훅 가져오고, 저렇게 하면 콜백함수가 들어가나 봄. navigate(-1) 하면 바로 전, 뒤로 가기임. na..

React 2023.11.30

중첩 라우팅

라우트 안에 라우트 이렇게 하면 /articles/:id임. 마치 스프링 컨트롤러에서 class레벨에 Mapping 지정해주고, 컨트롤러 메소드마다 추가로 지정해주는 거랑 똑같네. 저기 안에 들어가 보면, import React from "react"; import { Outlet } from "react-router-dom"; import "../scss/Articles.scss"; const Articles = () => { return ( ); }; 저 Outlet이, 내부 라우터에 준 컴포넌트가 들어갈 수 있는 공간임. 즉, 위 같은 경우 /articles 해서 들어가면 저 Outlet 부분 안나오지만(지정을 안했으니까), /articles/1 해서 들어가면, 저 Outlet부분, 즉 /artic..

React 2023.11.30

20. 프로젝션

프로젝션이란 select에 무얼 가지고 올지 대상을 지정하는 것. 보통 이제 세가지 경우로 나뉘는데, 단일 프로젝션 복수의 프로젝션 Dto 조회 (이것도 사실 상 DB상에서 복수의 프로젝션 범주) 이정도 단일 조회는 엔티티 자체를 조회해오거나, 아니면 m.username해서 하나만 조회해 올 때. @Test public void simpleProjection(){ List result = query.select(m.username).from(m).fetch(); for (String s : result) { System.out.println("s = " + s); } } 그냥 조회해 오는거다. select 절 안에 조회해올것의 표현식을 쓰고, 가져오면 된다. Q클래스는 엔티티의 정보를 담은 표현식들의 모..

19. 상수, 문자 더하기

상수 @Test public void constant(){ List result = query.select(m.username, Expressions.constant("A")) .from(m) .fetch(); for (Tuple tuple : result) { System.out.println("tuple = " + tuple); } } Expressions 라는 게 있다. QueryDSL껀데, QueryDSL용 표현식? 으로 바꿔주는 그런 것 같다. 그냥 기타 등등을 저기에 넣어둔 게 아닐까? 여튼 Expressions.constant() 하면 이름 그대로 상수를 넣을 수 있다. 그러면 JPQL에서 상수로 바뀌어 지는 모양이다. tuple = [member1, A] tuple = [member2, A..

18. CASE 문

SQL문에서 CASE문을 쓰는 건 처음봤다. 프로시저에서는 몰라도, SQL 쿼리에 직접 쓰는 건 처음봤다. @Test public void basicCase(){ List result = query.select(m.age .when(10).then("열살") .when(20).then("스무살") .otherwise("기타")) .from(m).fetch(); for (String s : result) { System.out.println("s = " + s); } } 뭐 보면, select 절 위주로 보면, m.age가 10일땐 "열살"로 가져오고, 20일 땐 "스무살", 나머지는 "기타"로 가져옴. 그렇게 문자열로 가져옴. 결과는 잘 나왔고, s = 열살 s = 스무살 s = 기타 s = 기타 /* ..