IT 프로젝트/쇼핑몰 만들기 [Spring Boot] 스프링 부트 프로젝트/쇼핑몰 만들기 - SpringBoot 초기셋팅(myBatis-SpringBootStater)

김태현·2023년 9월 21일
0
post-thumbnail

본격적인 코드에 들어가기 전 스프링 부트 프로젝트의 초기셋팅 후 application 및 mybatis 기본셋팅을 하였다.

프로젝트 초기셋팅

SpringBoot 에서 지원하는 Spring Stater Project를 통해 라이브러리를 편하게 셋팅할 수 있었다.

1. 프로젝트 생성


  • 타입은 maven으로 나중에 베포는 War로 설정한다. 자바는 11버전이며 프로젝트 완료 후 설정할 도메인을 패키지 명으로 정하였다
  • SpringBoot의 장점으로 라이브러리를 프로젝트 시작할때 쉽게 받을 수 있다.
  • lombok : 코드의 가독성(@getter, @setter,@nonNull 등)
  • MyBattis: DB연동 라이브러리
  • SpringSecurity : 추후 사용자 정보를 암호화 시키기 위한 라이브러리
  • Spring Web : MVC

2. 더 필요한 라이브러리 추가

pom.xml에 추가로 필요한 라이브러리를 작성한다.

1. Tomcat을 사용 하는 것처럼 라이브러리 추가

		<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
		<dependency>
		    <groupId>org.apache.tomcat.embed</groupId>
		    <artifactId>tomcat-embed-jasper</artifactId>
		</dependency>

2. JSTL 추가
		<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
		<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>jstl</artifactId>
		</dependency>
        
3. log4jdbc추가 
        <!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
			<dependency>
				<groupId>org.bgee.log4jdbc-log4j2</groupId>
				<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
				<version>1.16</version>
			</dependency> 

3. application.properties 설정

#서버재시작 끄기
spring.devtools.restart.enabled=false

#Encoding설정
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true

#port 변경 (url 에 포트를 입력 안해도 되도록 기본 http포트인 80번 포트로 설정) 
server.port=80

#jsp 연결
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

# log level(log4jdbc의 로그기록)
#배포 할때는 warnig이상으로 설정
logging.level.root=info

##transcation 처리
spring.aop.proxy-target-class=true

## Multipart 사용 여부
spring.servlet.multipart.enabled=true
## 파일 하나당 최대 크기 설정
spring.servlet.multipart.max-file-size=3MB
## 총 파일 최대 크기 설정
spring.servlet.multipart.max-request-size=20MB

#mybatis-3 경로 설정
mybatis.mapper-locations=classpath:database/mappers/*Mapper.xml
mybatis.config-location=classpath:database/config/MybatisConfig.xml

##DB 아이디 및 비밀번호 셋팅

## username
spring.datasource.hikari.username=${userName}
## password
spring.datasource.hikari.password=${passWord}

#로그 DriverClass
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url
spring.datasource.url=jdbc:mariadb://${domain}:${port}/ameise
# mariaDB Driver
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver


#로그 기본셋팅
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
#maxlineLength : sql문을 몇줄까지 출력할지 결정 (0은 제한X)
log4jdbc.dump.sql.maxlinelength=0

logging.level.jdbc=OFF
#jdbc.sqlonly : SQL문을 로그로 남깁니다.
logging.level.jdbc.sqlonly=OFF        
##jdbc.sqltiming : SQL문과 수행된 시간을 로그로 남깁니다.
logging.level.jdbc.sqltiming=DEBUG 
#jdbc.audit : ResultSet을 제외한 JDBC 호출 정보를 로그로 남긴다. 
logging.level.jdbc.audit=OFF             
#jdbc.resultset : ResultSet을 포함한JDBC 호출 정보를 로그로 남깁니다.
logging.level.jdbc.resultset=OFF      
#jdbc.resultsettable : SQL 결과 조회된 데이터를 table 형식으로 만들어줍니다.
logging.level.jdbc.resultsettable=DEBUG  
logging.level.jdbc.connection=OFF  

3. MyBatisConfig.xml생성

application.properties에서 mybatisConfig의 경로를 미리 설정해두었기에 설정에 맞게 src/main/resources/database/config/MyBatisConfig.xml로 생성한다

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
  <configuration>
  <settings>
  <!-- 카멜 케이스 VO 매핑 -->       
  <setting name="mapUnderscoreToCamelCase" value="true"/> DB를 snake_case 형식으로 제작하여 Java에서 사용시 camelCase형식으로 매핑
  </settings>
  <typeAliases>
  
  <typeAlias type="com.man.ameise.vo.MemberVO" alias="MemberVO"/> vo의 경로를 줄이기 위해 별칭 설정
  </typeAliases>
  </configuration>


4. MemberMapper.xml생성

application.properties에서 mapper 경로를 미리 설정해두었기에 설정에 맞게 src/main/resources/database/mapper/MemberMapper.xml로 생성한다

Member데이터를 담을 Vo객체 생성

@Getter
@Setter
public class MemberVO {

	Long id;
	String accountId;
	String password;
	String name;
	String phone;
	Boolean marketing;
	Timestamp regDate;
	Timestamp updateDate;
	Timestamp loginDate;

}

MemberMapper생성

MemberMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <mapper namespace="com.man.ameise.dao.MemberDAO"> DAO의 namespace설정하여 실행할 경로 설정
	  <select id="getMemberList" resultType="MemberVO"> //namespace의 경로의 "getMemberList"메서드를 실행시키면 작동
	  select * from MEMBER  //기본 select 문으로 실험
	  
	  </select>
  </mapper>

DAO 및 Service


@Mapper
public interface MemberDAO {

	public MemberVO getMemberList()throws Exception;
	
}

@Service
public class MemberService {

	@Autowired
	private MemberDAO memberDAO;
	public MemberVO getMemberList()throws Exception {
		return memberDAO.getMemberList();
		
	}
}

간단하게 홈컨트롤러에서 실행

@Controller
public class HomeController {

	@Autowired
	private MemberService memberService;
	@GetMapping("/")
	public ModelAndView home(ModelAndView mv)throws Exception{
		MemberVO memberVO = memberService.getMemberList(); //실행
		
		mv.setViewName("index");
		return mv;
	}
}

5. 테스트 및 결과확인

현재 들어있는 Member 테이블안 데이터

스프링에서 결과확인

결과를 확인하기 위해 디버깅 모드를 통해 MemberVO에 잘 들어왔는지 확인한다.

  • 카멜케이스 셋팅도 잘 설정되어 들어온것을 볼 수있다.

의뢰자 : 아마이저 쇼핑몰(링크)

profile
주니어개발자

0개의 댓글

관련 채용 정보