스프링 프레임워크 회원 프로젝트 따라가하기 - 유투브 (코딩레시피님)
인텔리제이로 스프링 프레임워크 프로젝트 만들기 - 회원가입 완성하기(인텔리제이, 스프링, Mybatis, MySQL)
parkrams
2023. 4. 2. 15:59
728x90
root-context 세팅
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 데이터베이스 이름 및 계정 확인 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/내디비 이름!;serverTimezone=Asia/Seoul" />
<property name="username" value="유저 아이디!"/>
<property name="password" value="유저 비밀번호!"/>
</bean>
<!-- 파일 모두 생성했는지 확인 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value ="classpath:/mybatis-config.xml" />
<property name="mapperLocations" value="classpath:/mapper/*.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8" />
<property name="maxUploadSize" value="10000000" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
mybatis-config.xml 추가
- 경로 -> /resources/mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="com.homestudy.member.dto.MemberDTO" alias="member"/>
</typeAliases>
</configuration>
resources 폴더에 mapper 폴더 생성 후 memberMapper.xml 추가
- 경로 -> /resources/mapper/memberMapper.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="Member">
<!--회원 가입 처리를 위한 쿼리문-->
<insert id="save" parameterType="member"> <!-- parameterType이 넘기는 데이터
원래는 넘기는 데이터의 풀 경로를 써줘야 하지만 줄일 수 있다
이규칙을 추가 시켜 주는 것이 mybatis.config.xml 의 typleAliases 부분 -->
insert into member_table(memberEmail, memberPassword, memberName, memberAge, memberMobile)
values (#{memberEmail}, #{memberPassword}, #{memberName}, #{memberAge}, #{memberMobile})
</insert>
</mapper>
- 해석 values (#{memberEmail}, #{memberPassword}, #{memberName}, #{memberAge}, #{memberMobile})
- mybatis 문법에서는 (parmeterType="member")DTO 객체로 넘겨 받았기 때문에 그 위치를 (#{DTO 필드 이름},
#{DTO 필드 이름}, #{DTO 필드 이름}) (#{}) << 이 형태로 값을 넣어줘야 한다.
쿼리문 유저 생성 및 테이블 생성
create user homespringuser@localhost identified by '8615'; -- 유저 생성 및 비밀번호 설정
grant all privileges on homestudy.* to homespringuser@localhost; -- 권한주기
**회원 테이블**
create table member\_table(
id bigint primary key auto\_increment, -- 기본키 설정
memberEmail varchar(20) unique,
memberPassword varchar(20),
memberName varchar(20),
memberAge int,
memberMobile varchar(30)
);
MemberRepository
package com.homestudy.project01.repository;
import com.homestudy.project01.dto.MemberDTO;
import lombok.RequiredArgsConstructor;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;
@Repository
@RequiredArgsConstructor //의존성 주입
public class MemberRepository {
private final SqlSessionTemplate sql;
public int save(MemberDTO memberDTO) { // insert 문
System.out.println("memberDTO = " + memberDTO);
//mapper namespace="Member"이랑 일치여부 확인
// Member -> mapper namespace="Member"를 가리키고
// Member.save에서 save는 mapper namespace="Member" 의 id = 'save'를 가르킨다
return sql.insert("Member.save", memberDTO); //넘기는 객체
}
}
- 해석 return sql.insert("Member.save", memberDTO); //넘기는 객체
- Repository의 Member 는 memberMapper.xml의 namespace="Member"를 가르키고
save라는 id를 가진 값을 호출하면서 memberDTO 값을 넘긴다 - Id 값은 AUTO로 작성하게 해둬서 따로 입력되지 않음
참조하는 방법 확인
public int save(MemberDTO memberDTO) { // insert 문
System.out.println("memberDTO = " + memberDTO);
//mapper namespace="Member"랑 일치여부 확인
// Member -> mapper namespace="Member"를 가리키고
// Member.save에서 save는 mapper namespace="Member" 의 id = 'save'를 가르킨다
return sql.insert("Member.save", memberDTO); //넘기는 객체
MemberRepository가 memberMapper.xml의 <mapper namespace="Member">을 참고 한다
return 에서 "Member.save" 가 참조 하는 값이
memberMapper.xml 에서 <mapper namespace="Member> 의
<insert id="save" 부분이 된다
return에서 ,memberDTO 의 member는
memberMapper.xml 에서 <mapper namespace="Member> 의
<parameterType="member"을 참조하게 되는데
여기서 "member"를 원래는 전체 주소를 적어야 하지만 짧게 지정해주는 곳이
mybatis-config.xml의
<configuration>
<typeAliases>
<typeAlias type="com.homestudy.member.dto.MemberDTO" alias="member"/>
</typeAliases>
</configuration>
alias="member" 에서 설정한다 별칭 지정
<typeAlias type="com.homestudy.member.dto.MemberDTO" // 이 경로에 있는 MemberDTO클래스를
alias="member"/> // member 로 쓰겠다
728x90