본문 바로가기

Spring/Spring

1201 Spring - 회원 정보 조회, 로그인

728x90
반응형

순서

MyBatis - xml 파일을 사용해서 SQL 실행하는 방법
1) 테이블 생성 및 개발 준비
2) 도메인 객체(DTO) 설계 및 생성 (클래스 파일)
3) DAO 인터페이스 생성 
4) 인터페이스 안에 필요한 기능을 정의 (추상메서드)
    XML - mapper 생성, SQL 구문 작성 
   - mapper DTD 추가
  - mapper 의 위치 (저장경로) 저장 
  - SQL 구문 작성
  
5) MyBatis 와 XML mapper 연결 (인식)
6) DAO 객체 구현 (인터페이스 구현)
- 해당 메서드 사용해서 동작 호출
- DAO 테스트

 

 

 

 

 

 

memberMapper.xml
<mapper namespace="com.itwillbs.mapper.MemberMapper">
  
  <!-- 시간 정보 조회 -->
  <select id="getTime" resultType="string">
 	 	select now()
  </select>
  
  
  
  	<!-- 회원가입 -->
  	<insert id="createMember">
  		insert into tbl_member(userid,userpw,username,useremail)
  		values(#{userid},#{userpw},#{username},#{useremail})
  	</insert>
  	
  	
  </mapper>

 VO 안에 정보를 자동으로 넣고, 꺼내는 작업을 스프링프레임워크가 하고있음.

 

 

 

memberDAOTest
public class MemberDAOTest {
	
	//DAO 객체 필요
	@Inject
	private MemberDAO dao;
	
	@Test
	public void 시간정보_조회하기() {
		System.out.println(dao.getServerTime());
	}
	
	
	//회원정보저장(Create)
	@Test
	public void createUser() {
		//회원정보 생성(사용자 입력 정보)
		MemberVO vo = new MemberVO();
		vo.setUserid("admin");
		vo.setUserpw("1234");
		vo.setUsername("관리자");
		vo.setUseremail("admin@admin.com");
		
		dao.insertMember(vo);
		
	}

 

MemberDAO dao = new MemberDAO(); 의미

실행은 Test 에서 실행 

 

 

 

memberDAO
public interface MemberDAO {
	//디비 서버의 시간 정보 조회 
	
	public String getServerTime();
	
	// 회원가입
	public void insertMember(MemberVO vo);
	 // 디비 연결 - sql 작성 - 실행  (DAO 의 역할) 
	
}

 

memberDAOImpl
@Repository
public class MemberDAOImpl implements MemberDAO {

	//디비 연결 필요 -> 의존 관계 발생. 
	@Inject
	private SqlSession sqlSession; //(repository 라는 어노테이션을 통해 root-context로 이동하게 됨 -> root안의 sqlSession 정보 가져오기)
	
	//mapper의 namespace 정보 저장 
	private static final String NAMESPACE="com.itwillbs.mapper.MemberMapper";  //mapper 정보 저장
	
	
	@Override
	public String getServerTime() {
		//디비 연결 (없음.)
		//sql작성 & pstmt 객체 (쿼리 필요없음. xml 파일에서 만들어놓고 옴) 
		//? ?
		// 쿼리 실행 후 데이터 처리 
		
		//sqlSession.selectOne(쿼리);
		String time 
			= sqlSession.selectOne("com.itwillbs.mapper.MemberMapper.getTime");
		
		return time;
	}

	@Override
	public void insertMember(MemberVO vo) {
		//디비 연결 - sql 작성 - 실행 
		
		sqlSession.insert(NAMESPACE + ".createMember",vo);
		
		
	}

}

insert 해라 는 뜻 

 

,vo 왜 하는거지?
=>

 

 

 

 


 

근데 스프링에서 뜨는 이 빨간 코드는 에러가 아님!

 


 

root-context
<bean id="dataSource" 
	      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	      <!-- 객체에 있는 set()메서드 -->
	      <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
	      <property name="url" value="jdbc:log4jdbc:mysql://localhost:3306/springdb"/>
	      <property name="username" value="root"/>
	      <property name="password" value="1234"/>
	
	</bean>

 

 

 

특정 회원정보 조회


외부 라이브러리 추가 

https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4/1.16

 

<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 -->
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
    <version>1.16</version>
</dependency>

 

밑에 파일 2개도 추가 

logback.xml
0.00MB
log4jdbc.log4j2.properties
0.00MB

 

 

 

 

 

 

 

로그인


 

memberMapper.xml
	<!-- 로그인 -->
  	<select id="loginMember" resultType="com.itwillbs.domain.MemberVO">
  	select * from tbl_member 
  	where userid=#{userid} and userpw=#{userpw}
  	
  	</select>

 

memberDAO
//로그인 처리
	public MemberVO loginMember(MemberVO vo);
	public MemberVO loginMember(String userid, String userpw);

 

memberDAOImpl
@Override
	public MemberVO loginMember(MemberVO vo) {
		MemberVO vo2 = sqlSession.selectOne(NAMESPACE+".loginMember",vo);
		
		return vo2;
	}

	@Override
	public MemberVO loginMember(String userid, String userpw) {
//		sqlSession.selectOne(statement,userid,userpw); (X)
//		sqlSession.selectOne(statement,vo); (o) vo 객체 생성해서 set 호출 저장 
		
		//VO 객체 안에 전달된 정보를 한번에 전달 불가능한 경우 
		//관련없는 데이터를 1개 이상 전달하는 경우(join)
		Map<String, Object> paramMap = new HashMap<String, Object>();
		
		
		//paramMap.put("mapper에 매핑될 이름", 데이터);
		
		paramMap.put("userid", userid);
		paramMap.put("userpw", userpw);
		
		MemberVO vo = sqlSession.selectOne(NAMESPACE+".loginMember",paramMap);
		
				return vo;
	}

 

 

memberDAOTest
//로그인
	@Test
	public void 로그인() {
		MemberVO vo = dao.loginMember("admin","1234");
		
		if(vo!=null) {
			System.out.println("ㄺㅇ 성공");
		}else {
			System.out.println("실패");
		}
		MemberVO inputVo = new MemberVO();
		inputVo.setUserid("admin");
		inputVo.setUserpw("1234");
		
		MemberVO vo2 = dao.loginMember(inputVo);
		if(vo2!=null) {
			System.out.println("ㄺㅇ 성공");
		}else {
			System.out.println("실패");
		}
	}
728x90
반응형

'Spring > Spring' 카테고리의 다른 글

1206 Spring  (0) 2022.12.06
1205 Spring 컨트롤러 4가지  (0) 2022.12.05
1124 Spring - MyBatis 와 스프링의 연동  (0) 2022.11.24
1122 Spring - MyBatis  (0) 2022.11.22
1121 Spring FrameWork 기초  (0) 2022.11.21