CREATE TABLE을 붙여넣으면 DTO, resultMap, Mapper XML까지 한 번에. 컬럼명만 넣으면 camelCase ↔ snake_case 변환표가 나옵니다.
왼쪽에 CREATE TABLE 문을 붙여넣으면 DTO·resultMap·Mapper XML이 나옵니다. 컬럼명만 넣으면 camelCase·snake_case 변환표가 나와요.
입력 DDL
CREATE TABLE tb_notice ( notice_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '공지 번호', title VARCHAR(200) NOT NULL COMMENT '제목', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (notice_id) ) COMMENT='공지사항';
Java DTO
/** 공지사항 */
@Getter
@Setter
@NoArgsConstructor
@ToString
public class NoticeDto {
/** 공지 번호 */
private Long noticeId;
/** 제목 */
private String title;
private LocalDateTime createdAt;
}MyBatis resultMap
<resultMap id="noticeResultMap" type="NoticeDto">
<id property="noticeId" column="notice_id"/>
<result property="title" column="title"/>
<result property="createdAt" column="created_at"/>
</resultMap>| DB 타입 | Java | jdbcType |
|---|---|---|
| BIGINT, NUMBER(10~19) | Long | BIGINT |
| INT, SMALLINT, NUMBER(1~9) | Integer | INTEGER |
| TINYINT(1), BIT(1), BOOLEAN | Boolean | BOOLEAN |
| DECIMAL, NUMERIC, NUMBER(p,s) | BigDecimal | DECIMAL |
| VARCHAR, CHAR, TEXT, ENUM, JSON | String | VARCHAR |
| CLOB | String | CLOB |
| DATE | LocalDate (Oracle: LocalDateTime) | DATE |
| DATETIME, TIMESTAMP | LocalDateTime | TIMESTAMP |
| TIMESTAMP WITH TIME ZONE | OffsetDateTime | TIMESTAMP_WITH_TIMEZONE |
| BLOB, BYTEA, VARBINARY | byte[] | BLOB |
wrapper 타입(Long, Integer)을 쓰는 건 NULL 컬럼을 0으로 오해하지 않기 위해서예요. 날짜를 java.util.Date로 받는 옛 프로젝트라면 날짜 옵션을 Date로 바꾸면 됩니다.
DB 툴에서 'Show CREATE TABLE'이나 'DDL 복사'로 뽑은 CREATE TABLE 문을 그대로 붙여넣으면 됩니다. 여러 테이블을 한 번에 넣어도 테이블마다 따로 만들어지고, 인덱스·외래키 줄은 알아서 건너뜁니다.
네. MySQL/MariaDB의 COMMENT '...'와 PostgreSQL/Oracle의 COMMENT ON COLUMN ... IS '...' 둘 다 읽어서 필드 위 Javadoc 주석으로 넣습니다. 테이블 코멘트는 클래스 주석이 됩니다.
resultMap에 column과 property를 직접 짝지어 두면 그 설정 없이도 매핑됩니다. 반대로 mapUnderscoreToCamelCase=true를 켜 두었다면 resultMap 없이 resultType에 DTO를 바로 써도 되니, 필요한 쪽만 복사해서 쓰세요.
AUTO_INCREMENT·IDENTITY·serial 컬럼, DEFAULT CURRENT_TIMESTAMP(now(), SYSDATE) 등록일, ON UPDATE CURRENT_TIMESTAMP 수정일은 DB가 채우도록 뺍니다. AUTO_INCREMENT가 있으면 insert에 useGeneratedKeys도 붙여줍니다.
Oracle의 DATE는 시·분·초까지 저장하는 타입이라 LocalDateTime으로 매핑합니다. VARCHAR2·NUMBER·CLOB처럼 Oracle 전용 타입이 있으면 Oracle DDL로 판단하고, 그 외에는 DATE를 LocalDate로 둡니다.
CREATE TABLE 없이 컬럼명만 한 줄에 하나씩(또는 쉼표로) 넣으면 camelCase, PascalCase, snake_case, UPPER_SNAKE, kebab-case 변환표가 나옵니다. 열마다 복사 버튼이 있어서 엑셀 컬럼 목록을 바로 필드명으로 바꿀 수 있어요.
쿼리 로그에서 실제 실행된 SQL을 뽑을 땐 MyBatis 로그 → SQL 변환기를 같이 써보세요.