라벨이 MyBatis인 게시물 표시

[MySql] 연결 문자열에서 타임존 설정

  Spring MVC 작업 중 아래와 같은 에러가 발생했습니다. CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: The server time zone value    context-datasource.xml에 연결 문자열에 serverTimezone을 설정하라고 스택오버플로우에서 말하더군요. 문제는 timezone을 뭐로 설정해야하는가? 였습니다.   우선 첫 번째로, 서버에서 사용중인 타임존을 알아야겠죠? SELECT @@global.time_zone, @@session.time_zone;   위와 같이 쿼리를 날렸더니, 둘 다 SYSTEM이란 답만 돌아왔습니다. 그래서 아래와 같이 해봤습니다. SELECT timediff(curtime(), utc_time());   결과는 09:00:00 였습니다. 서울이죠. 그래서 serverTimezone=Seoul 이라고 했더니 안 되더라고요. 구글로 검색해본 결과 앞에 대륙명까지 적어야 한다는 것을 깨달았습니다. 참고: 위키피디아   serverTimezone=Asia/Seoul 로 설정하니 정상 작동되는 것을 확인했습니다.

[MyBatis/MySQL] 하나의 Mapper Method에서 여러개의 Statement를 쿼리하는 방법

마이바티스 MySQL에서 한 번에 여러개의 구문 실행하기?   제목에도 쓰여있듯, MySQL 사용자를 위한 방법입니다. 일반적으로 아래와 같이 Mapper XML에 작성하고 돌리면 구문 에러가 날 겁니다. UPDATE md SET call_count = NULL #{callCount} WHERE biz_id = ( SELECT id FROM business WHERE cat3 = #{id} ); UPDATE category_3rd SET call_count = NULL #{callCount} WHERE id = #{id};   웃기는 건, 워크벤치나 IDE 자체 내장 SQL 툴로 돌리면 된다 라는 겁니다. 하지만 그건 해당 툴들이 Multiple Queries를 지원하기 때문 이죠.   감이 잡히셨죠? Multiple Queries를 지원 가능하게 하면 됩니다. 한 번에 여러 구문 실행 가능하게 하는 방법   다시 말씀드리지만, MySQL  전용입니다. 다른 DB들은 각각 따로 방법이 있는 듯 했습니다. Oracle의 경우엔 BEGIN .. END를 썼던가 하고, MSSQL의 경우엔 GO를 중간에 집어넣었던 것 같고... 암튼 그것들은 그냥 흘려봤기 때문에 직접 검색하시고, 여기선 MySQL 기준으로 알려드리겠습니다.   DB Connection URL 에 allowMultiQueries=true 를 추가해주세요. 전 현재 스프링 프레임워크를 사용중이므로 Bean Configuration을 예시로 들겠습니다. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="url" value=...

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭

  안녕하세요? 혼살입니다. 블로그에 정말 오랜만에 글을 씁니다. 일하고 겜하고 일하고 겜하고 집에 박혀서 매일 똑같은 일상을 보내다 보니 블로그에 글을 오랫동안 안 쓰고 있었네요. 대부분 근황은 유튜브 동영상으로 대체하다 보니 더욱 더 그랬던 것 같습니다.   하지만 이번엔 영상보다 글로 남기는 게 더 유익할 것 같아 간만에 글을 쓰게 되었습니다. 바로 MySQL Data Types & Java Data Types 매칭! 현재 진행중인 외주 작업 중 SET 타입을 Java에선 어떻게 처리하나 찾아보다가 잘 정리된 블로그 글 을 발견해 나중에 손쉽게 찾기 위해 제 블로그에도 씁니다. 위 링크에 들어가시면 테이블로 잘 정리돼 있으니 한 번 들어가 보시는것도 괜찮겠네요. 왼쪽은 MySQL, 오른쪽은 Java의 데이터 타입입니다. BIT Boolean TINYINT Integer BOOL/BOOLEAN (TINYINT(1)) Integer SMALLINT Unsigned 상관없이 Integer MEDIUMINT Integer, Unsinged라면 Long INT Integer, Unsigned라면 Long BIGINT Long, Unsigned라면 java.math.BigInteger FLOAT Float DOUBLE Double DECIMAL java.math.BigDecimal DATE java.sql.Date DATETIME java.sql.Timestamp TIMESTAMP java.sql.Timestamp TIME java.sql.Timestamp YEAR yearsIsDateType이 설정됐다면 java.sql.Date, 아니라면 Short CHAR 컬럼이 Binary로 설정되지 않았다면 String, 돼 있다면 byte[] VARCHAR CHAR와 동일 BINARY byte[] VARBINARY byte[] TINYBLOB byte[] TINYTEX...