forEach
-
이번 포스트에서는 MyBatis가 가진 멋진 기능중 하나인 동적 쿼리 작성에 대해 살펴보자. 동적 쿼리는 상황에 따라 분기 처리를 통해 SQL을 동적으로 만드는 것이다.문자열 대체를 통한 쿼리의 재구성 ${}를 이용한 쿼리 작성이제까지 SQL을 작성하면서 사용했던 플레이스 홀더로 #을 사용했었는데 $도 사용할 수 있다. 이 둘의 차이를 살펴보자.구분#{ } : 바인딩 플레이스 홀더 $ { }: 문자열 치환 플레이스 홀더용도값 바인딩문자열 치환변경 가능성값만 대체 가능테이블명, 컬럼명 등 구조까지 변경 가능처리 방식PreparedStatement 사용Statement 사용SQL 인젝션 공격안전취약${}는 SQL 삽입 공격이 발생할 수 있기 때문에 사용을 지양하는 것이 좋지만 쿼리의 구조를 변경할 수 있다는..
[MyBatis] 04. 동적 쿼리이번 포스트에서는 MyBatis가 가진 멋진 기능중 하나인 동적 쿼리 작성에 대해 살펴보자. 동적 쿼리는 상황에 따라 분기 처리를 통해 SQL을 동적으로 만드는 것이다.문자열 대체를 통한 쿼리의 재구성 ${}를 이용한 쿼리 작성이제까지 SQL을 작성하면서 사용했던 플레이스 홀더로 #을 사용했었는데 $도 사용할 수 있다. 이 둘의 차이를 살펴보자.구분#{ } : 바인딩 플레이스 홀더 $ { }: 문자열 치환 플레이스 홀더용도값 바인딩문자열 치환변경 가능성값만 대체 가능테이블명, 컬럼명 등 구조까지 변경 가능처리 방식PreparedStatement 사용Statement 사용SQL 인젝션 공격안전취약${}는 SQL 삽입 공격이 발생할 수 있기 때문에 사용을 지양하는 것이 좋지만 쿼리의 구조를 변경할 수 있다는..
2023.06.18 -
vanilla js를 이용해서 배열을 반복할 때 forEach 문장을 사용할 수 있다. 문제는 forEach는 배열 요소를 처음부터 끝까지 순회하기 때문에 중간에 break 할 수가 없다. let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; nums.forEach(item => { console.log("찾는 중.." + item); if (item == 4) { console.log("발견"); return true; } }) 위 코드의 출력 결과는 아래와 같다. 원하는 아이탬을 찾았다면 중간에 벗어나고 싶은데 기본적으로 forEach문장은 그런 행동이 불가능하다. 이때 some() 함수를 사용하며 원하는 동작이 가능하다. some()에서 return true를 하면 반복문을..
[vanilla js]forEach와 somevanilla js를 이용해서 배열을 반복할 때 forEach 문장을 사용할 수 있다. 문제는 forEach는 배열 요소를 처음부터 끝까지 순회하기 때문에 중간에 break 할 수가 없다. let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; nums.forEach(item => { console.log("찾는 중.." + item); if (item == 4) { console.log("발견"); return true; } }) 위 코드의 출력 결과는 아래와 같다. 원하는 아이탬을 찾았다면 중간에 벗어나고 싶은데 기본적으로 forEach문장은 그런 행동이 불가능하다. 이때 some() 함수를 사용하며 원하는 동작이 가능하다. some()에서 return true를 하면 반복문을..
2019.11.05