이상하게 mapper.xml에서 sql 쿼리가 정상적으로 작동을 안하는지 결과가 엉뚱하게 테이블 내의 모든 row를 리턴해서 보여주고 있는 것이었다. 그리고 에러 메시지도 안뜨고...

내가 원하는건 딱 keyword를 포함하고 있는 게시글들이었는디...

참으로 답답했는데 다시 검색 기능 구현하기를 검색해본 결과 아래와 같이 코드를 변경해주니 정상 작동하였다. (감격 ㅠㅜㅜ)

 

요약: 

like '%'||#{keyword}||'%'
부분을 ->
CONCAT ('%', #{keyword},'%')

문제였던 구역: (전)

<!-- sql code 조각 -->
	<!-- 반복되는 sql의 일부를 sql태그를 이용하여 따로 빼둘수 있다.
	검색 조건 sql -->
	<sql id="search">
		<choose>
			<!-- 검색옵션이 전체 검색일 경우 -->
			<when test="searchOption == 'all'">
				WHERE 
					writer like '%'||#{keyword}||'%'
				OR 
					content like '%'||#{keyword}||'%'
				OR 
					title like '%'||#{keyword}||'%'
			</when>
			<!-- 전체 검색이 아닐 경우 -->
			<otherwise>
				WHERE ${searchOption} like '%'||#{keyword}||'%'
			</otherwise>
		</choose>
	</sql>

 

문제였던 구역: (후)

<sql id="search">
		<choose>
			<!-- 검색옵션이 전체 검색일 경우 -->
			<when test="searchOption == 'all'">
				WHERE 
					writer like CONCAT ('%', #{keyword},'%')
				OR 
					content like CONCAT ('%', #{keyword},'%')
				OR 
					title like CONCAT ('%', #{keyword},'%')
			</when>
			<!-- 전체 검색이 아닐 경우 -->
			<otherwise>
				WHERE ${searchOption} like CONCAT ('%', #{keyword},'%')
			</otherwise>
		</choose>
	</sql>

board-mapper.xml 전체 코드

<mapper> 태그 안에 아래 코드: 

<!-- 01. 게시글 전체 목록 조회 및 검색조회까지 -->
	<select id="listAll" resultType="board">
			SELECT*FROM
				LF_Product_Test
			<!-- 검색조건 -->
			<include refid="search"></include>
			ORDER BY seq
		<!-- 페이징 -->
		<!-- <include refid="pagingFooter"></include>	 -->
	</select>
	<!-- 02_02. 게시글 레코드 갯수 -->
	<select id="countArticle" resultType="int">
		SELECT COUNT(*) FROM LF_Product_Test
		<!-- WHERE절을 include 태그로 삽입 -->
		<include refid="search"></include>
	</select>
	<!-- sql code 조각 -->
	<!-- 반복되는 sql의 일부를 sql태그를 이용하여 따로 빼둘수 있다.
	검색 조건 sql -->
	<sql id="search">
		<choose>
			<!-- 검색옵션이 전체 검색일 경우 -->
			<when test="searchOption == 'all'">
				WHERE 
					writer like CONCAT ('%', #{keyword},'%')
				OR 
					content like CONCAT ('%', #{keyword},'%')
				OR 
					title like CONCAT ('%', #{keyword},'%')
			</when>
			<!-- 전체 검색이 아닐 경우 -->
			<!-- 따옴표 넣어줬는데 맞나...? -->
			<otherwise>
				WHERE ${searchOption} like CONCAT ('%', #{keyword},'%')
			</otherwise>
		</choose>
	</sql>

직접 공부를 하면서 이론 정리를 위해서 내용을 정리를 해보았다.

구글 로그인을 구현하기 위해서 아래 단계를 따르면 좋을 것 같다.

1. Oauth에 대해야 알아보기

2. Access Token 이란?

3. Google login을 위한 세팅 작업

4. 로그인 코드 구현 흐름 파악하기

 

빠른 숏컷을 위하면 아래 블로그를 살펴보면 대략 전체적인 흐름을 빠르게 살펴볼수 있습니다.

github.com/lyw3447/EveryDay/wiki/Google-Login

 

1. Oauth에 대하여:

Oauth + access token 설명 있음:

opentutorials.org/course/3405

opentutorials.org/course/2473/16571

2. Access Token 이란? (주의!: 세부 내용이다): 전체적인 흐름은 1번 이고잉 선생님 강의 참조

access token: 

velog.io/@silverj-kim/Front-end-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84-1-OAuthJWTSession

 

3. Google login을 위한 세팅 작업:

imweb.me/faq?mode=view&category=29&category2=47&idx=71637

 

4-1. 로그인 코드 구현 흐름 파악하기:

아래 wiki 에서 설명이 잘 되어 있어서 참고하면 좋다.

github.com/lyw3447/EveryDay/wiki/Google-Login

 

4-2. Google 로그인 구현 내용: (다른 분의 블로그 포스트 내용을 참고 했습니다)

gdtbgl93.tistory.com/182

깃헙:

github.com/curiduck/spring-google-oauth

 

 

그냥 참고: (주관적인 제 의견입니다...) 만약에 틀렸다면 편하게 말씀해주시면 감사하겠습니다. 

아래 링크는 이고잉 선생님이 간단하게 로그인을 구현한 내용이다.

그런데 이건 한계가 있다. 같은 페이지 내에서 로그인하고 redirect를 하는것 같다..

그리고 로그인 정보를 유지하는데 토큰을 사용하지 않는것 같다.... 

opentutorials.org/course/3424/22236

가령 fontawesome의 이미지를 사용하고 싶을때 cdn bootstrap 을 사용하고 싶을때가 있다.

이때 해당 fontawesome cdn boostrap 을 html 용으로 받아서 위에 <head> 태그 안에 넣어서 사용할 수 있다.

 

사용법 순서)

구글 검색 -> fontawesome bootstrap cdn -> html 용으로 copy! -> html 문서의 <head>태그 안에 넣기 -> <body>태그 안의 코드에 fontawesome class 사용하기! 

 

 

fontawesome 의 버전이 계속 달라지는 것 같은데,

위 버전은 아래 사이트에서 원하는 아이콘을 찾아서 사용하면 된다.

https://fontawesome.com/v4.7/icons/

이게 버전이 안 맞으면 호환성 문제 때문에 제대로 아이콘이 안 뜨기 때문에 버전에 맞춰서 아이콘을 적용해야 한다.

 

2021/09/31 (월) : 오전 12:26

fontawesome 사용 방법이 좀 바뀐것 같다. 이메일 인증 후 할당 되는 고유 fontawesome cdn 으로 사용할 수 있는 것 같다.

 

<head> 태그 안에 아래 코드를 넣어주면 된다. (해당 CDN은 아래 블로그 작성자님의 CDN이다. 

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.14.0/css/all.css" integrity="sha384-HzLeBuhoNPvSl5KYnjx0BT+WB0QEEqLprO+NBkkk5gbc67FTaL7XIGa2w1L0Xbgc" crossorigin="anonymous">

https://amango.tistory.com/7

 

폰트어썸 - Font Awesome 아이콘 사용법

폰트어썸 이용하기 폰트어썸 홈페이지 바로가기 ▼ Font Awesome The world’s most popular and easiest to use icon set just got an upgrade. More icons. More styles. More Options. fontawesome.com 무료로..

amango.tistory.com

 

+ Recent posts