KDT/WEB

240129 WEB(마이바티스)

001cloudid 2024. 1. 29. 17:42
728x90

1) 프로젝트 만들기
File - New - Other - spring - spring Legacy project - Next - Project Name - springProject2 - Templates Spring MVC Project 선택  - Next - Yes -package : com.itwillbs.myweb2 - Finish

2) 자바 버전 변경
프로젝트 오른쪽 버튼 - Properties - Java Compiler - JDK Compliance - Alt + u - 11으로 변경 - Project Facets - Dynamic Web Module - 3.1 - Java - 11 - Apply and Close

그림 1.

 

3) p33 스프링 버전 변경  => 4.3.8 버전으로 변경
pom.xml
<java-version>11</java-version>
<org.springframework-version>4.3.8.RELEASE</org.springframework-version>

4) 프로그램 설치 (JDBC, spring JDBC)
pom.xml
https://mvnrepository.com 검색해서 설치할 파일의 코드를

pom.xml 코드 넣으면 자동으로 프로그램 다운되면서 설치됨

<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
     <groupId>com.mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <version>8.0.33</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>


5) 가상주소 시작 => web.xml (서블릿 지정, 한글설정)

<!--  post전송 request 한글처리 "utf-8" 설정  -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


6) /WEB-INF/spring/appServlet/servlet-context.xml 연결
@애노테이션 자동으로 스캔할 폴더 등록

<context:component-scan base-package="com.itwillbs.myweb2" />
<context:component-scan base-package="com.itwillbs.controller" />
<context:component-scan base-package="com.itwillbs.service" />
<context:component-scan base-package="http://com.itwillbs.dao" />


주소매핑 => 자동으로 메서드 호출
@Controller  MemberController
@RequestMapping(value = "/member/insert", method = RequestMethod.GET)

객체생성
@Inject => @Service
private MemberService memberService;

@Inject => @Repository
private MemberDAO memberDAO;

7) /WEB-INF/spring/root-context.xml 연결

DB 연결

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
		
	<!-- 데이터베이스 연결 객체 생성 
	 프로그램 설치
	 → 자동으로 프로그램 설치 Maven 의존
	 → Maven 서버에 프로그램이 저장되어 있고 다운받고자 하는 프로그램 이름을 적으면 다운받아서 사용 
	 → 프로그램 맨 아래 pom.xml(다운받고 싶은 프로그램 목록을 적음)
	 → 웹 maven repository 검색
	 → https://mvnrepository.com/에서 mysql 검색 
	 → 중간에 Maven 코드 복사
	 → pom.xml에 코드 붙여넣기 
	 → https://mvnrepository.com/에서 Spring JDBC 검색
	 → 버전 수정 <version>${org.springframework-version}</version> -->
	
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
		<property name="url" value="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul"></property>
		<property name="username" value="root"></property>
		<property name="password" value="1234"></property>
	</bean>	
		
</beans>

 

 

프로그램 설치(MyBatis, MyBatisSpring)

마이바티스를 이용해서 프로그램을 사용

-> pom.xml에서 mybatis, MyBatisSpring 프로그램 설치 

-> root-context.xml에 mybatics 객체 생성

mvnrepository.com에서 mybatis, mybatisspring 코드 복사해서 web.xml에 붙여넣기

pom.xml 코드 넣으면 자동으로 프로그램 다운되면서 설치됨

		<!-- Mybatis -->
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>3.4.1</version>
		</dependency>
		
		<!-- Mybatis Spring -->
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-spring</artifactId>
		    <version>1.3.1</version>
		</dependency>

 

※ MyBatis는 자바 퍼시스턴스 프레임워크의 하나로 XML이나 애노테이션을 사용해 저장 프로시저나 SQL문으로 객체들을 연결시킴. 즉, 자바 DB연동하는 프레임 워크라고 할 수 있음. MyBatis를 사용하므로서 자바에 SQL구문을 없앨 수 있음

 

src/main/resource에 mybatis-config.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>
 
</configuration>

 

src/main/resource 폴더 mappers 생성 후 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.itwillbs.mappers.memberMappers">

</mapper>

 

 

https://mybatis.org/mybatis-3/index.html 참조해서 사용

 

root-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
		
	<!-- 데이터베이스 연결 객체 생성 
	 프로그램 설치
	 → 자동으로 프로그램 설치 Maven 의존
	 → Maven 서버에 프로그램이 저장되어 있고 다운받고자 하는 프로그램 이름을 적으면 다운받아서 사용 
	 → 프로그램 맨 아래 pom.xml(다운받고 싶은 프로그램 목록을 적음)
	 → 웹 maven repository 검색
	 → https://mvnrepository.com/에서 mysql 검색 
	 → 중간에 Maven 코드 복사
	 → pom.xml에 코드 붙여넣기 
	 → https://mvnrepository.com/에서 Spring JDBC 검색
	 → 버전 수정 <version>${org.springframework-version}</version> -->	
	<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/jspdb?serverTimezone=Asia/Seoul" />
		<property name="username" value="root" />
		<property name="password" value="1234" />
	</bean>
	
<!--	pom.xml에서 mybatis 프로그램 설치 
		→ root-context.xml에 mybatis 설정, 객체 생성
		→ https://blog.mybatis.org/
		→ https://mybatis.org/mybatis-3/
		→ https://mybatis.org/mybatis-3/getting-started.html
		→ src/main/resources 폴더에 XML파일 생성 mybatis-config.xml 파일 만들기
		→ src/main/resources 폴더 - mappers 폴더(SQL 폴더) 만들기 
		→ memberMapper.xml 파일 만들기-->
	<!-- 객체 생성 <bean> -->
		<bean id="sqlSessionFactory"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- property : 속성값(멤버변수를 속성이라고함) ref="참조변수명" -->
		<property name="dataSource" ref="dataSource" />
		<!-- value=경로/환경설정파일의 위치 -->
		<property name="configLocation"
			value="classpath:/mybatis-config.xml" />
		<!-- value=경로/sqlmapper 파일 위치 -->
		<property name="mapperLocations"
			value="classpath:mappers/**/*Mapper.xml" />
	</bean>
	
	<!-- => mybatis 사용(연결정보) 객체 생성 
		 => destroy-method="clearCache" 기억장소 삭제	
		 => MemberDAO에서 자동 객체 생성
		 	@Inject
			private SqlSession sqlSession;
	-->
	<bean id="sqlSession"
		class="org.mybatis.spring.SqlSessionTemplate"
		destroy-method="clearCache">
		<constructor-arg name="sqlSessionFactory"
			ref="sqlSessionFactory" />
	</bean>
		
</beans>

 

※Bean의 주요 속성

  • class : 정규화 된 자바 클래스 이름
  • id : bean의 고유 식별자
  • property : 생성 시 bean setter에 전달할 인수
  • constructor-arg : 생성 시 생성자에 전달할 인수
  • scope : 객체의 범위

 

MemberDAO

package com.itwillbs.dao;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.itwillbs.domain.MemberDTO;

@Repository
public class MemberDAO {
	
	//마이바티스 멤버 변수 정의 => 객체 생성 자동으로 전달(주입) 받음
	@Inject
	private SqlSession sqlSession;	

	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberDAO insertMember()");
		
		//				  sql구문(전체파일이름.sql 구문 이름), 값
		sqlSession.insert("com.itwillbs.mappers.memberMapper.insertMember", memberDTO);	
	}

}

 

memberMapper

<?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">
<!-- namespace="com.itwillbs.mappers.memberMappers"
	 => memberMapper.xml 파일 => xml 파일이름 -->
<mapper namespace="com.itwillbs.mappers.memberMappers">
		 <!-- sql구문 이름 = 메소드명과 같이하는게 편함
		 	  id="insertMember" sql 구문의 이름 
		 	  
		 	  ? 대신에 memberDTO 멤버변수 이름 적어줌 #{변수명}-->
	<insert id="insertMember">
		insert into member(id,pw,name,date)
						<!-- DB열 이름 -->
		value(#{id},#{pw},#{name},#{date})
		<!-- #{} memberDTO의 멤버변수를 뜻함. 문법으로 약속되어 있음 -->
	</insert>

</mapper>

 

memberService

package com.itwillbs.service;

import java.sql.Timestamp;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import com.itwillbs.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;

@Service
public class MemberService {
	//MemberDAO 객체생성 → 멤버변수
	//@Inject → MemberDAO 클래스 찾기 → @Repsitory 애노테이션 자동으로 찾기 → 자동으로 객체 생성
	//찾으면 객체 생성
	//servlet-context에 component-scan 추가
	@Inject
	private MemberDAO memberDAO;
	
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberService insertMember()");
		//가입날짜 설정
		memberDTO.setDate(new Timestamp(System.currentTimeMillis()));
		
		//insertMember() 메소드 호출
		memberDAO.insertMember(memberDTO);
		
		
	}

}

 

springProject2.zip
0.04MB

 

안될 경우 위의 파일과 비교해서 해보기

 

MemberDAO 변수명이 길어서 줄이기

package com.itwillbs.dao;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.itwillbs.domain.MemberDTO;

@Repository
public class MemberDAO {
	
	//마이바티스 멤버 변수 정의 => 객체 생성 자동으로 전달(주입) 받음
	@Inject
	private SqlSession sqlSession;	
	private static final String namespace = "com.itwillbs.mappers.memberMapper";
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberDAO insertMember()");
		
		//				  sql구문(전체파일이름.sql 구문 이름), 값
		sqlSession.insert(namespace+".insertMember", memberDTO);	
	}

}

 

mapper  -> sql 

dao -> sql 메소드 호출

 

MemberController

package com.itwillbs.controller;

import java.lang.ProcessBuilder.Redirect;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.itwillbs.domain.MemberDTO;
import com.itwillbs.service.MemberService;

//주소매핑

@Controller
@RequestMapping("/member/*") //member로 시작하는 모든 주소를 매핑
public class MemberController {
	
	//MemberService 객체생성 → 멤버변수
	//@Inject → MemberService 클래스 찾기 → @Service 애노테이션 자동으로 찾기 → 자동으로 객체 생성
	//찾으면 객체 생성
	//servlet-context에 component-scan 추가
	@Inject
	private MemberService memberService; 

	
	//@RequestMapping(value = "/insert", method = RequestMethod.GET)
	@GetMapping("/insert")
	public String insert() {
		// WEB-INF/views/member/insert.jsp 이동
		//주소는 /member/insert 주소변경없이 이동
		return "/member/insert";
	}
	
	//@RequestMapping(value = "/insertPro", method = RequestMethod.POST)
	@PostMapping("/insertPro")
	public String insertPro(MemberDTO memberDTO) {
		System.out.println("MemberController insertPro()");
		System.out.println(memberDTO.toString());
		//회원가입 처리
		
		//패키지 com.itwillbs.service 파일 MemberService
		//패키지 com.itwillbs.dao 파일 MemberDAO
		
		
		//insertMember() 메소드 호출
		memberService.insertMember(memberDTO);
		
		// 로그인 가상 주소 /member/login 주소 변경 이동
		return "redirect:/member/login";
	}
	
	// /member/login => member/login.jsp 이동
	//@RequestMapping(value = "/login", method = RequestMethod.GET)
	@GetMapping("/login")
	public String login() {
		return "/member/login";
	}
	
}

로그인 처리

<?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">
<!-- namespace="com.itwillbs.mappers.memberMapper"
	 => memberMapper.xml 파일 => xml 파일이름 -->
<mapper namespace="com.itwillbs.mappers.memberMapper">
		 <!-- sql구문 이름 = 메소드명과 같이하는게 편함
		 	  id="insertMember" sql 구문의 이름 
		 	  
		 	  ? 대신에 memberDTO 멤버변수 이름 적어줌 #{변수명}-->
	<insert id="insertMember"> 
						<!-- DB열 이름 -->
	insert into members(id,pw,name,date) 
	values(#{id},#{pw},#{name},#{date}) 
	<!-- #{} memberDTO의 멤버변수를 뜻함. 문법으로 약속되어 있음 -->
	</insert>
	
<!-- 	select 구문에서 결과값이 있고 resultType에 결과형을 지정 -->
	<select id="userCheck" resultType="java.lang.Boolean">
	select * from members
	where id = #{id} and pw = #{pw};
	</select>
	
</mapper>

 

package com.itwillbs.controller;

import java.lang.ProcessBuilder.Redirect;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.itwillbs.domain.MemberDTO;
import com.itwillbs.service.MemberService;

//주소매핑

@Controller
@RequestMapping("/member/*") //member로 시작하는 모든 주소를 매핑
public class MemberController {
	
	//MemberService 객체생성 → 멤버변수
	//@Inject → MemberService 클래스 찾기 → @Service 애노테이션 자동으로 찾기 → 자동으로 객체 생성
	//찾으면 객체 생성
	//servlet-context에 component-scan 추가
	@Inject
	private MemberService memberService; 

	
	(...생략...)
	
	// /member/login => member/login.jsp 이동
	//@RequestMapping(value = "/login", method = RequestMethod.GET)
	@GetMapping("/login")
	public String login() {
		// WEB-INF/views/member/login.jsp 주소 변경 없이 이동
		return "/member/login";
	}
	
	@PostMapping("/loginPro")
	public String loginPro(MemberDTO memberDTO) {
		System.out.println("MemberController loginPro()");
		System.out.println(memberDTO.toString());
		//로그인 처리
		boolean result = memberService.userCheck(memberDTO);
		System.out.println(result);
		
		// 메인 가상 주소 /member/main 주소 이동 변경
		return "redirect:/member/main";
	}
	
		// 가상주소 /member/main => member/main.jsp 이동
	@GetMapping("/main")
	public String main(MemberDTO memberDTO) {
		System.out.println("MemberController main()");
		
		return "/member/main";
	}
	
	
	
}

 

package com.itwillbs.service;

import java.sql.Timestamp;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import com.itwillbs.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;

@Service
public class MemberService {
	//MemberDAO 객체생성 → 멤버변수
	//@Inject → MemberDAO 클래스 찾기 → @Repsitory 애노테이션 자동으로 찾기 → 자동으로 객체 생성
	//찾으면 객체 생성
	//servlet-context에 component-scan 추가
	@Inject
	private MemberDAO memberDAO;
	
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberService insertMember()");
		//가입날짜 설정
		memberDTO.setDate(new Timestamp(System.currentTimeMillis()));
		
		//insertMember() 메소드 호출
		memberDAO.insertMember(memberDTO);
	}


	public boolean userCheck(MemberDTO memberDTO) {
		System.out.println("MemberService userCheck()");
		
		//userCheck 메소드 호출
		return memberDAO.userCheck(memberDTO);
	}
	
	

}

 

package com.itwillbs.dao;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.itwillbs.domain.MemberDTO;

@Repository
public class MemberDAO {
	
	//마이바티스 멤버 변수 정의 => 객체 생성 자동으로 전달(주입) 받음
	@Inject
	private SqlSession sqlSession;	
	private static final String namespace = "com.itwillbs.mappers.memberMapper";
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberDAO insertMember()");
		
		//				  sql구문(전체파일이름.sql 구문 이름), 값
		sqlSession.insert(namespace+".insertMember", memberDTO);	
	}

	public boolean userCheck(MemberDTO memberDTO) {
		System.out.println("MemberDAO userCheck");
		
		// .selectOne() : 리턴 결과가 1개
		// .selectList() : List형으로 리턴
		// .selectMap() : Map형으로 리턴
		return sqlSession.selectOne(namespace+".userCheck", memberDTO);
	}
	
	

}

 

에러 → 리턴값이 true, false가 아니기 때문. 이를 수정

 

package com.itwillbs.controller;

import java.lang.ProcessBuilder.Redirect;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.itwillbs.domain.MemberDTO;
import com.itwillbs.service.MemberService;

//주소매핑

@Controller
@RequestMapping("/member/*") //member로 시작하는 모든 주소를 매핑
public class MemberController {
	
	//MemberService 객체생성 → 멤버변수
	//@Inject → MemberService 클래스 찾기 → @Service 애노테이션 자동으로 찾기 → 자동으로 객체 생성
	//찾으면 객체 생성
	//servlet-context에 component-scan 추가
	@Inject
	private MemberService memberService; 

	(...생략...)
	// /member/login => member/login.jsp 이동
	//@RequestMapping(value = "/login", method = RequestMethod.GET)
	@GetMapping("/login")
	public String login() {
		// WEB-INF/views/member/login.jsp 주소 변경 없이 이동
		return "/member/login";
	}
	
@PostMapping("/loginPro")
	public String loginPro(MemberDTO memberDTO) {
		System.out.println("MemberController loginPro()");
		System.out.println(memberDTO);//폼에서 입력한 id,pw
		//로그인 처리
		MemberDTO memberDTO2 = memberService.userCheck(memberDTO);
		System.out.println(memberDTO2);
		if(memberDTO2!=null) {
			//아이디, 비밀번호가 일치하면 memberDTO2 주소값 리턴 => main 페이지로 이동
			// 메인 가상 주소 /member/main 주소 이동 변경
			return "redirect:/member/main";
			
			
		} else {
			//아이디, 비밀번호가 불일치하면 null값을 리턴 => login페이지로 이동
			// 메인 가상 주소 /member/login 주소 이동 변경
			return "redirect:/member/login";
		}
	}
		
}

 

package com.itwillbs.service;

import java.sql.Timestamp;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import com.itwillbs.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;

@Service
public class MemberService {
	//MemberDAO 객체생성 → 멤버변수
	//@Inject → MemberDAO 클래스 찾기 → @Repsitory 애노테이션 자동으로 찾기 → 자동으로 객체 생성
	//찾으면 객체 생성
	//servlet-context에 component-scan 추가
	@Inject
	private MemberDAO memberDAO;
	
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberService insertMember()");
		//가입날짜 설정
		memberDTO.setDate(new Timestamp(System.currentTimeMillis()));
		
		//insertMember() 메소드 호출
		memberDAO.insertMember(memberDTO);
	}

	public MemberDTO userCheck(MemberDTO memberDTO) {
		System.out.println("MemberService userCheck()");
		
		//userCheck 메소드 호출
		return memberDAO.userCheck(memberDTO);
	}

}

 

package com.itwillbs.dao;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.itwillbs.domain.MemberDTO;

@Repository
public class MemberDAO {
	
	//마이바티스 멤버 변수 정의 => 객체 생성 자동으로 전달(주입) 받음
	@Inject
	private SqlSession sqlSession;	
	private static final String namespace = "com.itwillbs.mappers.memberMapper";
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberDAO insertMember()");
		
		//				  sql구문(전체파일이름.sql 구문 이름), 값
		sqlSession.insert(namespace+".insertMember", memberDTO);	
	}

	public MemberDTO userCheck(MemberDTO memberDTO) {
		System.out.println("MemberDAO userCheck");
		
		// .selectOne() : 리턴 결과가 1개
		// .selectList() : List형으로 리턴
		// .selectMap() : Map형으로 리턴
		return sqlSession.selectOne(namespace+".userCheck", memberDTO);
	}

}

 

<?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">
<!-- namespace="com.itwillbs.mappers.memberMapper"
	 => memberMapper.xml 파일 => xml 파일이름 -->
<mapper namespace="com.itwillbs.mappers.memberMapper">
		 <!-- sql구문 이름 = 메소드명과 같이하는게 편함
		 	  id="insertMember" sql 구문의 이름 
		 	  
		 	  ? 대신에 memberDTO 멤버변수 이름 적어줌 #{변수명}-->
	<insert id="insertMember"> 
						<!-- DB열 이름 -->
	insert into members(id,pw,name,date) 
	values(#{id},#{pw},#{name},#{date}) 
	<!-- #{} memberDTO의 멤버변수를 뜻함. 문법으로 약속되어 있음 -->
	</insert>
	
<!-- 	select 구문에서 결과값이 있고 resultType에 결과형을 지정 -->
	<select id="userCheck" resultType="com.itwillbs.domain.MemberDTO">
	select * from members
	where id = #{id} and pw = #{pw};
	</select>
	
</mapper>

 

240129.zip
0.04MB

 

728x90