일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- gradle
- nginx
- log4j2
- intellijIDEA
- MySQL
- react
- Kubernetes
- springboot
- jetbrains
- docker
- BPMN
- tibero
- NCP
- useEffect
- database
- IntelliJ
- Spring
- wildfly
- Java
- kubectl
- JavaScript
- LOG4J
- Windows
- JPA
- nodejs
- Git
- gson
- VSCode
- mybatis
- dbeaver
- Today
- Total
목록myBatis (5)
두 손끝의 창조자
myBatis는 파라미터 바인딩을 위해 #{name} 이나 ${name} 형식으로 바인딩 변수를 선언한다. 대부분 SQL 툴에서는 :name 형태로 바인딩 변수를 지정하는데 myBatis로 작성된 sql은 바인딩 변수 형식을 변경을 해야 DB 툴에서 사용할 수 있다. Intellij에 포함되어 있는 Database Console 에서는 이 바인딩 변수의 패턴을 지정할 수 있다. 그래서 #{name} 이나 ${name} 패턴으로 된 변수도 sql 수정 없이 사용할 수 있다. 환경 설정에서 패턴을 추가하자. 추가된 패턴 : #\{([^\{\}]*)\}
ctrl+f 를 눌러서 찾기/바꾸기 창을 연 뒤에 정규식 옵션을 체크하고 찾기에 #\{(\w+)\}바꾸기에 :$1를 넣는다. 그 반대는 :(\w+)#{$1}이다.
메인 모듈에 mapper 가 있는데 테스트 모듈에서 매퍼 파일을 못 읽어서 Mapped Statements collection does not contain value for 와 같은 예외가 발생할 수 있다. 대부분의 경우 id를 잘 못 넣은 케이스지만 매퍼 파일 자체를 해당 모듈에서만 읽어서 발생하는 문제일 수 있다. String MYBATIS_MAPPER = "classpath*:/mappers/**/*.xml"; 매퍼 경로를 위와같이 변경하고 시도해보자.
프로젝트에서 여러가지 DataAccess 기술을 쓰고 있는데 한 트랜잭션에서 다양한 기술을 사용할 때는 유의 할 점이 있다. JPA에서 데이터를 저장하고 난 뒤 flush를 해야 다른 기술에서 그 데이터를 확인 할 수 있다. mybatis도 유사한 기능이 있는데 캐시를 가지고 있어서 flush를 해줘야한다. 이 캐시 자체의 범위를 조정하거나 쓰는 옵션이 있는데 링크를 참조. [오픈소스] MyBatis 내장 cache에 대해서 (tistory.com)