728x90
반응형
💡MyBatis 관련 라이브러리 추가
💁♀️MyBatis 추가
🔸Maven 프로젝트 MyBatis 추가
▪️ pom.xml에 디펜던시 추가
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency>
▪️ pom.xml 선택 후 마우스 우클릭 > Maven > Update Project
🔸Gradle 프로젝트 MyBatis 추가
▪️ build.gradle 에 디펜던시 추가
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
▪️ build.gradle 선택 후 마우스 우클릭 > Gradle > Refresh Gradle Projec
💁♀️log4jdbc 추가 (SQL 로그 출력)
🔸Maven
▪️ pom.xml<dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> <version>1.16</version> </dependency>
🔸Gradle
▪️ Build.gradleimplementation group: 'org.bgee.log4jdbc-log4j2', name: 'log4jdbc-log4j2- jdbc4.1', version: '1.16'
💡로그 설정
▪️ src/main/resources에 파일을 추가한다.
▪️ 경로 중요하다.
<logger name="com.shop" level="info"/>
🔸log level
▪️ info : 강조 정보
▪️ debug : 디버깅
▪️ warning : 실행이 되고, 에러는 아니나 수정하라고 알려준다. (경고)
▪️ error : 에러▪️ debug레벨 이하(info)를 주어야 정상적으로 작동된다.
▪️ 에러, 정상, 모두 다 보여준다(info)
📃logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative] [%thread] %-5level %logger{36} - %msg%n</Pattern> </encoder> </appender> <logger name="com.shop" level="info"/> <!-- log4j2-jdbc4 --> <logger name="jdbc" level="OFF" /> <logger name="jdbc.sqlonly" level="OFF" /> <logger name="jdbc.sqltiming" level="DEBUG" /> <logger name="jdbc.resultset" level="OFF" /> <logger name="jdbc.resultsettable" level="DEBUG" /> <logger name="jdbc.connection" level="OFF" /> <!-- log4j2-jdbc4 --> <root level="off"> <appender-ref ref="console"/> </root> </configuration>
📃log4jdbc.log4j2.Properties
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator log4jdbc.dump.sql.maxlinelength=0
💡SQL 로그 출력 설정
▪️ application.properties 에 다음 항목 추가
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy #spring.datasource.url=jdbc:mysql://localhost:3306/shop?serverTimezone=UT C spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/shop?serverTimez one=UTC
▪️ 기존 mysql 소스
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/shop?serverTimezone=UTC
💡Query Xml 경로 설정
▪️ application.properties 에 다음 항목 추가
▪️ all : **
▪️ classpath 경로 : src/main/resources
# mybatis mybatis.mapper-locations=classpath:mybatis/mapper/**/**.xml
💡VO 생성
▪️ 테이블 컬럼명으로 선언한다.
▪️ Lombok 이용을 위해 @Data 추가
▪️ entity는 테이블을 만든다. -- 실제로 db와 관련이 있다.
▪️ dto는 컨트롤러, 서비스 사이에서 정보를 주고받을때 정보를 담고, 테이블을 만들지 않는다.
▪️ member와 cart는 1:1이기 때문에 일대일 대응 관계이다.
▪️ Cart는 다수, Item도 다수이기 때문에 중간에 (다:1, 1:다) 로 거쳐주는 CartItem이 필요하다.
▪️ Cart, Item, Member, Order를 테이블로 구분지을 수 있다.
▪️ entitiy에 있는 java파일들을 복사해서 vo에 넣는다.
💡JPA 삭제 -- ( JPA 사용 X )
📃Member.java
▪️ JPA를 삭제하고 정리한 소스이다.
package com.shop.vo;
import com.shop.constant.Role;
import com.shop.dto.MemberFormDto;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.security.crypto.password.PasswordEncoder;
import javax.persistence.*;
@Getter @Setter
@ToString
public class Member {
private Long id;
private String name;
private String email;
private String password;
private String address;
private Role role;
}
▪️ 객체간 주고받을 때, _를 사용하는 snake_case표기법이 아닌 camelCase를 사용한다.
ex) member_id -> memberId (camelCase)
▪️ 자바에서 객체로 인식하려면 하단처럼 바꿀 것
▪️ Ctrl + Shift + O를 누르면 사용하지 않는 라이브러리들은 자동으로 삭제된다.
package com.shop.vo;
import com.shop.constant.Role;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter @Setter
@ToString
public class Member {
private Long memberId;
private String name;
private String email;
private String password;
private String address;
private Role role;
}
▪️ @Getter @Setter @ToString을 모두 사용한다면 @Data로 바꿀 수 있다.
package com.shop.vo;
import com.shop.constant.Role;
import lombok.Data;
@Data
public class Member {
private Long memberId;
private String name;
private String email;
private String password;
private String address;
private Role role;
}
💡HeidiSQL에서 db 확인하기
▪️ db에는 있으나, Member클래스에는 없는 정보를 가져온다.
▪️ reg_time, update_time, create_by, modified_by가 존재하지 않는다.
▪️ reg_time, update_time은 db에서 데이터 유형이 DATETIME이다.
▪️ mysql datetime == java timestamp 이므로 timestamp타입으로 가져온다.
▪️ 자바객체, db객체를 가져올 거기때문에 java.sql 라이브러리를 가져온다.
package com.shop.vo;
import java.sql.Timestamp;
import com.shop.constant.Role;
import lombok.Data;
@Data
public class Member {
private Long memberId;
private String name;
private String email;
private String password;
private String address;
private Role role;
private Timestamp regTime;
private Timestamp updateTime;
private String createdBy;
private String modifiedBy;
}
▪️ 동일한 방법으로 com.shop.entitiy에 있는 Cart, Item, Order 파일도 추가한다.
📃Cart.java
package com.shop.vo;
import java.sql.Timestamp;
import lombok.Data;
@Data
public class Cart {
private Long cartId;
private String memberId;
private Timestamp regTime;
private Timestamp updateTime;
private String createdBy;
private String modifiedBy;
}
📃db
📃Item.java
package com.shop.vo;
import java.sql.Timestamp;
import com.shop.constant.ItemSellStatus;
import lombok.Data;
@Data
public class Item {
private Long itemId;
private String itemNm;
private int price;
private int stockNumber;
private String itemDetail;
private ItemSellStatus itemSellStatus;
private Timestamp regTime;
private Timestamp updateTime;
private String createdBy;
private String modifiedBy;
}
📃db
📃Orders.java
package com.shop.vo;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import com.shop.constant.OrderStatus;
import lombok.Getter;
import lombok.Setter;
@Getter @Setter
public class Orders {
private Long ordeId;
private Member member;
private String memberId;
private LocalDateTime orderDate;
private OrderStatus orderStatus;
private Timestamp regTime;
private Timestamp updateTime;
private String createdBy;
private String modifiedBy;
}
📃db
💡샘플용 파일을 만든다.
728x90
반응형
'Back-End > Spring Boot' 카테고리의 다른 글
Spring Boot - javax.validation 어노테이션 예시 (0) | 2022.07.25 |
---|---|
Spring Boot - MyBatis 쿼리 Xml, DAO생성 (0) | 2022.07.25 |
Spring - Thymeleaf 레이아웃 (0) | 2022.07.25 |
Spring Boot - MyBatis 추가 (0) | 2022.07.22 |
Spring Boot - 스프링 시큐리티 (0) | 2022.07.22 |
댓글