동적SQL : 조건식이 없었다면 SQL문을 똑같은걸 여러개 만들어 수정해서 사용해야했을 것이다.
if
조건에 따라 최종적으로 만들어지는 SQL문이 달라지는걸 다이나믹SQL이라고 한다.(이것만이 다이나믹 SQL이란건 아님.)
if - else가 없는 대신 있는 문법이 choose - when
태그라고 불리는것들(xml이나 html)은 '
나 "
이 똑같다.
<select id="select21" resultMap="BoardMap" parameterType="map">
select
board_id,
title,
contents,
created_date,
view_count
from x_board
where
<choose>
<when test="item == 'no'">
board_id = #{keyword}
</when>
<when test='item == "title"'>
title like concat('%', #{keyword}, '%')
</when>
<otherwise>
contents like concat('%', #{keyword}, '%')
</otherwise>
</choose>
</select>
<when test='item == "1"'>
board_id = #{keyword}
</when>
<when test='item == "2"'>
title like concat('%', #{keyword}, '%')
</when>
item이란 이름으로 맵객체에서 값을 꺼내고 그 값과 문자를 비교하는데 그때 문자열을 비교하고싶으면 '
안에 "
을 넣어 비교해준다. ‘’'’이렇게 같은 코테이션을 4개 붙이면 앞 2개가 문자열인줄 알고 뒷 문자열 ‘‘를 문법오류라고 착각한다.
결론 : 맵으로 넘어온 값과 문자열을 비교할때는 문자냐 숫자냐를 따지지 말고 ‘’ 안에 ““를 해주는게 속편하다! ‘” “’ 이렇게!
높은자리에 갈수록 아랫사람이 보인다. 아주 당연한 이치..
누군가 나보다 잘한다면 무조건 따라하던가 물타기하기(허니버터, 밀키스) 따라하려면 독하게하고 물타기할거면 돋보이는 애를 눌러버리기 -> 이거 완전 정치아니냐
빈문자열도 하나의 문자로 취급해서 리스트에 들어갈때 한칸을 차지한다.
foreach사용
<where>
<foreach collection="noList" item="no">
or board_id = #{no}
</foreach>
</where>
자바코드로 따지자면
아래 코드와 같다. foreach사용법을 잘 알아두자
ArrayList<Object> list = map.get("noList");
for(Object obj : list) {
if(!no.equals("")) {
sql += "or board_id = " + no;
}
}
foreach도 안쓰는 ,를 알아서 제거하는건가? (제거한다)
이력서는 한군데에서만 관리하세요
뮤텍스(상호배타적) : 라디오, 선풍기(1단,3단 동시실행 불가)
세마포어 :
exerd 모델링 깔고 나서 생성하기
소로우 게이트 키 = 인공 키
FK가 PK역할을 같이 하면 그것이 바로 indentifying관계가 된다.
인덱스 지정 : 색인표를 만들어서 갱신,삭제,수정될때마다 색인표를 갱신하고 알파벳순으로 정렬하여 검색을 쉽게한다.