728x90
Gradle을 이용하여 빌드를 진행하기 때문에 그에 맞춰 필요한 설정을 해준다,
build.gradle에 dependency 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'javax.servlet:jstl'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
}
resources 폴더 하위 application.properties에도 설정을 진행한다.
## 사용할 포트번호
server.port=8088
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
## MariaDB
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=1234
## mybatis
mybatis.mapper-locations=classpath:mybatis/mappings/*.xml
mybatis.type-aliases-package=com.example.demo.member
mybatis.mapper-locations=classpath:mybatis/mappings/*.xml
-> sql문을 작성하는 mapping 파일의 위치 설정
mybatis.type-aliases-package=com.example.demo.member
-> mapper에 작성할 파일의 이름이 길어지기 때문에 별칭 설정
member-mapping.xml 파일
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="MemberService">
<insert id="insertMember">
INSERT INTO MEMBER VALUES(#{mid},#{mpw},#{mname})
</insert>
<update id="updateMember">
UPDATE MEMBER SET MNAME=#{mname} WHERE MID=#{mid}
</update>
<delete id="deleteMember">
<![CDATA[
DELETE FROM MEMBER WHERE MID=#{mid}
]]>
</delete>
<select id="selectOneMember" resultType="MemberVO">
SELECT * FROM MEMBER WHERE MID=#{mid}
</select>
<select id="selectAllBoard" resultType="MemberVO">
SELECT * FROM MEMBER
</select>
</mapper>
mapper namespace = 해당 파일을 MemberService라 명명
mapper namespace의 MemberService 앞에 별칭으로 설정해 놓은 com.example.demo.member가 생략되어 있다.
member-mapping.xml(MemberService) 파일을 사용하는 memberDAO
package com.example.demo.member.impl;
import com.example.demo.member.MemberVO;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("memberDAO")
public class MemberDAO {
@Autowired
private SqlSessionTemplate mybatis;
public void insertMember(MemberVO vo) {
System.out.println("회원가입 로그");
mybatis.insert("MemberService.insertMember", vo);
}
void updateMember(MemberVO vo) {
mybatis.update("MemberService.updateMember", vo);
}
void deleteMember(MemberVO vo) {
mybatis.delete("MemberService.deleteMember", vo);
}
MemberVO selectOneMember(MemberVO vo) {
return mybatis.selectOne("MemberService.selectOneMember", vo);
}
public List<MemberVO> selectAllMember(MemberVO vo) {
return mybatis.selectList("MemberService.selectAllMember", vo);
}
}
메서드 내의 인자 값은 namespace에 명명한 이름과 일치하여야 한다.
MemberService 인터페이스에 @Mapper 설정
@Mapper
public interface MemberService {
void insertMember(MemberVO vo);
void deleteMember(MemberVO vo);
void updateMember(MemberVO vo);
MemberVO selectOneMember(MemberVO vo);
List<MemberVO> selectAllMember(MemberVO vo);
}
해당 인터페이스를 상속받는 ServiceImpl
package com.example.demo.member.impl;
import com.example.demo.member.MemberService;
import com.example.demo.member.MemberVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("memberServiceImpl")
public class MemberServiceImpl implements MemberService {
@Autowired
private MemberDAO memberDAO;
@Override
public void insertMember(MemberVO vo) {
memberDAO.insertMember(vo);
}
@Override
public void deleteMember(MemberVO vo) {
memberDAO.deleteMember(vo);
}
@Override
public void updateMember(MemberVO vo) {
memberDAO.updateMember(vo);
}
@Override
public MemberVO selectOneMember(MemberVO vo) {
return memberDAO.selectOneMember(vo);
}
@Override
public List<MemberVO> selectAllMember(MemberVO vo) {
return memberDAO.selectAllMember(vo);
}
}
728x90
'Spring' 카테고리의 다른 글
Spring batch + 스케쥴러 사용 예제 (0) | 2022.12.06 |
---|---|
스프링 부트 - JPA 연동 (0) | 2022.12.05 |
스프링 부트 - Validator 검증 (0) | 2022.10.26 |
스프링 부트 - 의존 주입 (0) | 2022.10.25 |
스프링 부트 설치 및 시작 (0) | 2022.10.24 |