본문 바로가기
study/Mybatis

[Mybatis] 19. Mybatis MVC모델2 변경하기

by 금이패런츠 2022. 4. 19.
728x90
반응형
# src/main/java/model/mapper/mybatis.properties
driver=oracle.jdbc.driver.OracleDriver
username=kic
password=1234
url=jdbc:oracle:thin:@localhost:1521:xe

<?xml version="1.0" encoding="UTF-8" ?>
<!-- /src/main/java/model/mapper/mybatis-config.xml -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org/DTD config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <properties resource="model/mapper/mybatis.properties"/>
  <!-- Connection 설정 -->
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC" />
      <dataSource type="POOLED">
         <property name="driver" value="${driver}"/>
         <property name="url" value="${url}"/>
         <property name="username" value="${username}"/>
         <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers><!-- sql 구문 : mapper 패키지 내부의 인터페이스가 저장  -->
     <package name="model.mapper"/>
  </mappers>
</configuration>

package model.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import model.Member;

public interface MemberMapper {

	@Insert("insert into member (id,pass,name,gender,tel,email,picture)"
				+ " values(#{id},#{pass},#{name},#{gender},#{tel},#{email},#{picture})")
	int insert(Member mem);
	
	@Select({"<script>",
		"select * from member ",
		"<if test='id != null'> where id=#{id}</if>",
		"order by id",
		"</script>"})
	List<Member> select(Map<String, Object> map);

	@Update("update member set name=#{name}, gender=#{gender}, email=#{email}, "
			+ " tel=#{tel}, picture=#{picture} where id=#{id}")
	int update(Member mem);

	@Delete("delete from member where id=#{id}")
	int delete(String id);

	@Select("select id from member where email = #{email} and tel = #{tel}")
	String idSearch(@Param("email") String email, @Param("tel") String tel);

	@Select("select pass from member where id =#{id} and email = #{email} and tel = #{tel}")
	String pwSearch(Map<String, Object> map);

	@Select("update member set pass= #{pass} where id= #{id}")
	int updatePass(@Param("id") String id, @Param("pass") String pass);
}

package model;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;

import model.mapper.MemberMapper;

public class MemberDao {
	//Class : 클래스 정보 저장하고 있는 클래스
	//MemberMapper.class : MemberMapper 인터페이스의 클래스 정보
	private Class<MemberMapper> cls = MemberMapper.class;
	private Map<String,Object> map = new HashMap<>();
	public boolean insert(Member mem) {
		SqlSession session = DBConnection.getConnection();
		try {
			int cnt = session.getMapper(cls).insert(mem);
			if (cnt > 0) return true; //회원등록 성공
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(session);
		}
		return false;
	}
	public Member selectOne(String id) {
		SqlSession session = DBConnection.getConnection();
		try {
			map.clear();
			map.put("id", id);
			return session.getMapper(cls).select(map).get(0);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(session);
		}
		return null;
	}
	public boolean update(Member mem) {
		SqlSession session = DBConnection.getConnection();
		try {
			return session.getMapper(cls).update(mem) > 0;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(session);
		}
		return false;
	}
	public boolean delete (String id) {
		SqlSession session = DBConnection.getConnection();
		try {
			return session.getMapper(cls).delete(id) > 0;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(session);
		}
		return false;		
	}
	public List<Member> list() {
		SqlSession session = DBConnection.getConnection();
		try {
			return session.getMapper(cls).select(null);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(session);
		}
		return null;			
	}
	public String idSearch(String email, String tel) {
		SqlSession session = DBConnection.getConnection();
		try {
			return session.getMapper(cls).idSearch(email,tel);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(session);
		}
		return null;
	}
	public String pwSearch(String id, String email, String tel) {
		SqlSession session = DBConnection.getConnection();
		try {
			map.clear();
			map.put("id", id);
			map.put("email", email);
			map.put("tel", tel);
			return session.getMapper(cls).pwSearch(map);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(session);
		}
		return null;
	}
	public int updatePass(String id, String pass) {
		SqlSession session = DBConnection.getConnection();
		try {
			return session.getMapper(cls).updatePass(id, pass);
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(session);
		}
		return 0;
	}
}
728x90
반응형