본문 바로가기

분류 전체보기16

[MyBatis] test="stringValue == 'Y'" 에서 NumberFormatException 문제 상황문제가 되었던 부분의 조건문이다. AND A.COLUMN = #{condition}Java 측에서 stringValue에 할당한 값이 "Y" 였음에도 NumberFormatException이 발생한다.이는 stringValue에 String 타입의 값을 할당하였으나, 실제로 MyBatis에서 작성한 'Y'는 Char 타입에 해당되기 때문이다.이러한 현상이 나타나는 까닭은 정확히는 MyBatis의 문제라기보단 OGNL(Object-Graph Navigation Language) 인터프리터의 영향 때문인데, OGNL 인터프리터는 'Y'는 Char 타입으로, 'YY' 혹은 "Y"는 String 타입으로 해석한다.또한 Java에서는 Char 타입을 코드 값으로 저장하고 있다. 그래서 Char 타입.. 2025. 6. 29.
[MyBatis] XML 세미콜론 포함 시 SQLSyntaxErrorException Datagrip에서 동일 쿼리문 수행했을 때 정상 작동하나, Server에서 MyBatis를 통해 반환하는 값은 아래와 같았다.### Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended### The error may exist in URL [jar:file:/{.xml_파일_절대경로}]### The error may involve {mapper_패키지_경로.mapper_쿼리_id명}-Inline### The error occurred while setting parameters### SQL: {오류 대상 쿼리문, (parameter 위치의 경우 ? 로 기재됨)};.. 2025. 4. 3.
[JavaScript] Object key 동적으로 추가하기 Object 변수에 'foo'라는 이름의 key를 동적으로 추가해보자.정적인 추가const obj = {};const key = 'foo';obj.key = 'bar';console.log(obj);>>> { key: 'bar' } // 'key'라는 이름의 key가 저장된다. (의도한 동작 X)obj.foo = 'bar'; // 따라서 정적인 방식에서는 key 이름을 직접 명시해야 한다.console.log(obj);>>> { foo: 'bar' }동적인 추가const obj = {};const key = 'foo';obj[key] = 'bar';console.log(obj);>>> { foo: 'bar' }; // 'foo'라는 이름의 key가 저장된다. 2025. 3. 4.
[Swiper.js] 복제 DOM 이벤트 부착 시점의 문제 Swiper를 사용할 때, autoplay 속성을 활성화하면 슬라이드 간의 자연스러운 움직임을 나타내기 위해서 원본 DOM이 앞 뒤로 복제된다. 그래서 실제로 내가 타겟으로 삼은 DOM 요소들은 중앙에서 나타나고, Swiper 옵션이 적용됨과 동시에 앞 뒤로 duplicate 라는 이름의 클래스를 가진 복제 DOM들이 자동으로 생성된 것을 확인할 수 있다. (그래서 슬라이드가 전환될 때마다 activeIndex, realIndex를 찍어보면 본래 의도한 순서와 다르게 실제 의도한 수 + 총 원본 갯수 의 수로 나타난다.) 이 때 중요한 것은 원본 객체의 이벤트 리스너 부착 시점이다. 예를 들어 제품 정보를 나타내는 영역이었다고 가정해보자. 하나의 제품 정보에는 장바구니 담기, 좋아요 버튼, 제품 상세 페.. 2025. 2. 9.
[Firebase] Uncaught TypeError: Failed to resolve module specifier "firebase/app". Relative references must start with either "/", "./", or "../". 웹 앱에서 Firebase 적용 시, 모듈 방식의 JavaScript로 작성하였으나 모듈 번들러는 사용하지 않았을 때 발생하는 오류입니다. Firebase config 정보를 담은 JS 코드가 type="module"로 적용되어 있을 때, Firebase 모듈을 CDN을 통해 Google 서버에서 가져오는 것이 아니라면 (즉, npm으로 관리하고 있다면) Webpack, Parcel, Rollup, Snowpack 과 같은 모듈 번들러가 반드시 필요합니다. Firebase 공식 문서에서는 Firebase SDK 적용 방법을 네임스페이스 방식과 모듈 방식 두 가지 중 1 택의 형태로 안내해주고 있는데, 이 중 모듈식이 최신 방법론이며, 이것을 선택했을 때 모듈 번들러를 함께 사용해주어야 합니다. Fireb.. 2024. 9. 20.
[JavaScript] <head>에 넣은 <script>가 적용이 안된다? DOM 렌더링 시점에 따른 JS 호출 제어 Hello World 태그 안에 넣은  실행시킬 JavaScript 코드를 DOMContentLoaded로 감싼다.DOMContentLoaded는 모든 DOM 요소가 렌더링된 다음에 호출되도록 정의하는 이벤트 코드이다.따라서, 이는 태그 하단에서 태그를 호출하는 것과 거의 동일한 동작을 한다.document.addEventListener('DOMContentLoaded', () => { // DOM 렌더링 완료 후에 호출할 코드 document.querySelector('h1').style.color = 'red';})위 코드를 jQuery로 적용할 시에는 아래와 같이 작성한다.$(document).ready(() => { $('h1').css('color', 'red');}) 2024. 9. 1.