데이터베이스/MyBatis 7

[Mybatis] <resultMap> 사용

나의 경우는, DB에서 컬럼명 규칙은 스네이크 표기법으로 file_bno 이런식으로 DB를 설정했고 JAVA는 카멜표기법으로 fileBno 이런식으로 했는데, 이렇게되면 서로 변수명이 달라서 set 매칭이 안되더라, 이럴때 방법은 여러개가 있는데 그중 하나 내가 생각한건 쿼리에서 별칭을 줘서 자바변수랑 동일하게 빼내는방법도 있는데 일회성같고 불편해서 구글링해보니 으로 사용하면 가능하다.. 또는 Mybaits .xml파일을 따로 생성해서 설정하는방법도 되는거같다 m.stock.domain.NoticesFileUploadVo" id="fileVo"> SELECT * FROM NOTICESFILE WHERE FILE_NOTICES_BNO = #{bno}

[Mybaits] <selectKey> 속성

SQL 수행작업 중 insert된 이후에 알 수 있는 값 또는, 생성된 값을 바로 가져와서 select 쿼리를 보내야 하는 경우가 있다. 주로 생성하고 난 후의 인덱스(번호)를 가져와 작업해야 하는 상황에서 많이 사용한다. 이런경우 java에서 insert 쿼리를 실행하고 값을 받은 후 값을 가지고 다시 쿼리를 DB에 전송하는 방법이 있다. 하지만, 불필요한 여러번의 DB 입출력은 시간이 느려진다는 단점이 있다. 그때, selectKey를 사용하여 바로 적용할 수 있다. 마이바티스, 아이바티스 두개 다 적용이 가능하다. selectKey는 DB에 명령을 한번만 보내며, 우선 입력한 값의 결과값을 다음 쿼리로 바로 return 시켜주는 것이다. 아래 예제는 selectKey의 기본 사용법이다. SELECT..

[Mybaits] 마이바티스 #{}과 ${}의 차이

ex) (ID = admin) ▶ mybatis mapper SELECT ID FROM test WHERE ID = #{ID} Oracle로 넘어온 쿼리 SELECT ID FROM test WHERE ID = ? 실제 수행 쿼리 SELECT ID FROM test WHERE ID = 'admin' ▷'$'란? Statement를 의미합니다. ex) (num = 77) ▶ mybatis mapper SELECT ID FROM test WHERE num= ${num} Oracle로 넘어온 쿼리 SELECT ID FROM test WHERE num = 77 실제 수행 쿼리 SELECT ID FROM test WHERE num = 77 ▷ '#'과 '$'의 차이 '#'을 사용하게 된다면 오라클에서 변수를 바인드..

[Mybatis] 마이바티스 parameterType와 resultType차이

프로젝트를 하면서 프론트단에서 동적으로 무작위로 변경되는 데이터를 검색해주려 할때 어떤방식으로 쿼리에 데이터를 넣어야 될지 고민하고 있을떄 스프링에선 @RequestParam 으로 무작위된 데이터를 String stk_nm 이란 변수에 매핑을 해서 넣어주고 , 마이바티스에선 parameterType 속성을 사용해서 string 값의 파라미터가 들어올거다 하고 알려준것이다 1 2 3 4 5 6 7 public List GetNewsLiST(@RequestParam("stknm")String stk_nm){ log.info(service.getNewsList(stk_nm)); return service.getNewsList(stk_nm); } Colored by Color Scripter cs 1 2 3 s..

[Mybatis] 마이바티스 에서 #{}과 ${}의 차이

1. #는 쿼리가 수행될때 아래와 같이 된다 1 2 3 4 5 6 7 8 9 SELECT * FROM USER WHERE col = ? parameter : [값] cs ?에 bind된 값이 들어가게된다. 이쿼리의 컴파일된 내용을 재사용할수 있고, 파라미터에 따라 대입해주므로 효율적 내부적으로 preparedStatement 객체에서 ? 에 들어갈 파라미터의 값을 set 해줌으로써 사용이 된다. * preparedStatement는 한번 수행한 쿼리를 캐싱하는 객체 사용 용도 >> #일 경우, 값에 사용한다. 2. $는 쿼리가 수행될 때, 다음과 같이 된다 사용 용도 >> $일 경우는 컬럼명이 동적으로 바뀌어야 할 때 사용한다. 또는 테이블명. myBatis : ${컬럼명} = #{값} iBatis : ..