SQL 11

[MyBatis] foreach

http://huskdoll.tistory.com/507 방법은 Map을 선언시 로 선언하고 Object에 list를 넣어주고 query 부분에서 리스트를 foreach 돌려 사용하면 됩니다. DAO 부분에서 책 정보를 가져오도록 작성1234567891011121314151617public List getBooksInfo() { Map param = new HashMap(); param.put("id", "1"); //#{id}에 셋팅 param.put("name", "victor"); //#{name}에 셋팅 List codeList = new ArrayList(); codeList.add("01"); //in 조건에 넣을 정보 codeList.add("05"); param.put("code_list"..

Database 2018.05.25

[MySql] INDEX

인덱스 컬럼 기준먼저 말씀드릴 것은 1개의 컬럼만 인덱스를 걸어야 한다면, 해당 컬럼은 카디널리티(Cardinality)가 가장 높은 것을 잡아야 한다는 점입니다.카디널리티(Cardinality)란 해당 컬럼의 중복된 수치를 나타냅니다. 예를 들어 성별, 학년 등은 카디널리티가 낮다고 얘기합니다. 반대로 주민등록번호, 계좌번호 등은 카디널리티가 높다고 얘기합니다.인덱스로 최대한 효율을 뽑아내려면, 해당 인덱스로 많은 부분을 걸러내야 하기 때문입니다. 만약 성별을 인덱스로 잡는다면, 남/녀 중 하나를 선택하기 때문에 인덱스를 통해 50%밖에 걸러내지 못합니다. 하지만 주민등록번호나 계좌번호 같은 경우엔 인덱스를 통해 데이터의 대부분을 걸러내기 때문에 빠르게 검색이 가능합니다. 여러 컬럼으로 인덱스를 잡는다..

Database 2018.05.08

[MySQL] Transaction과 Loack

소스를 보고있었는데 transaction이 걸려야할 것 같은 곳에 transaction이 없었다.이유를 물어보니 transaction을 걸면 lock이 걸린다고했다.row transaction이 걸려야하는데 DB특성상 table transation이 걸려서? 그렇다고 했다.그래서 찾아보았다. MySQL에서 사용하는 Lock의 이해 [출처] http://blog.saltfactory.net/introduce-mysql-lock/ MySQL에서 Lock은 크게 Table Lock, Global Lock, Name Lock, User Lock 이 있다. Table Lock 테이블락은 어떤 세션에서 테이블 자원에 엑세스하여 데이터를 읽거나 쓰기를 할때 다른 세션에서는 테이블 자원에 대한 엑세스를 제한 하는 락이..

Database 2018.03.22

[MyBatis] #, $ 차이

2021.03.17 업데이트) # => Prepared Statement (동적) 쿼리문을 실행하기에 앞서 구문 분석, 의미 분석, 파싱 작업을 진행하여 SQL Injection 코드를 만나게 되면 오류 발생함 (SQL Injection 대비 가능) $ => Statement (정적) 쿼리 실행시마다 옵티마이저의 수행 계획 달라짐 여기서 유념해야 할 부분은 # 을 사용했을 때에는 ? 으로 치환이 되는 반면에 $ 를 사용한 케이스에서는 $ 영역에 100이라는 상수로 치환되어 쿼리를 수행하게 된다. 중요한 포인트는 101, 102, 103 과 같이 숫자가 바뀔 때마다 파싱 작업을 항상 진행해야 한다라는 것이다. 성능상에 단점이 존재한다라는 것을 알 수 있다. 변수로 인식하지 않게하기 위해서 #{param} ..

Database 2017.06.15

SQL JOIN

[DBGuide.net JOIN]http://www.dbguide.net/db.db?cmd=view&boardUid=148197&boardConfigUid=9&categoryUid=216&boardIdx=134&boardStep=1 두 개 이상의 테이블 들을 연결 또는 결합하여 데이터를 출력하는 것을 JOIN이라고 하며, JOIN은 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 핵심 기능이라고 할 수 있다. 일반적인 경우 행들은 PRIMARY KEY(PK)나 FOREIGN KEY(FK) 값의 연관에 의해 JOIN이 성립된다. 하지만 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립 가능하다. FROM 절에 여러 테이블이 나열되더라도 SQL에서 데이터를 처리할..

Database 2017.01.06

[Mybatis] resultType & resultMap

http://noritersand.tistory.com/229 http://noritersand.tistory.com/228 resultType으로 자바 클래스를 명시했을 때, 만약 두 모델, 즉 자바 클래스와 데이터 모델간 프로퍼티명이 다르면 마이바티스의 자동 매핑이 무력화될 것이다. 따라서 이 경우엔 다음처럼 둘의 이름이 일치하도록 alias를 사용하거나: 혹은 resultType을 resultMap으로 대체하는 방법을 택해야 한다: http://www.mybatis.org/mybatis-3/ko/sqlmap-xml.html MyBatis Mapper Document resultType : 이 구문에 의해 리턴되는 기대 타입의 패키지 경로를 포함한 전체 클래스명이나 별칭. collection인 경우 ..

Database 2016.11.30
반응형