SpringBoot 에서 지원하는 Spring Stater Project를 통해 라이브러리를 편하게 셋팅할 수 있었다.
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>
#서버재시작 끄기
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
<?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>
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>
@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;
}
}
결과를 확인하기 위해 디버깅 모드를 통해 MemberVO에 잘 들어왔는지 확인한다.