반응형

 

Mybatis

 

: 데이터베이스를 쉽게 다룰 수 있도록 도와주는 오픈 소스 ORM(Object-Relational Mapping) 프레임워크

 

DB를 쉽게 다룰 수 있으며 동적 쿼리 작성이 가능하다.

=> preparedstatement처럼 쿼리문을 복잡하게 입력하지 않고 실제 쿼리문과 유사하게 작성 가능

 

 

.properties 파일에 기입했던 정보들 기입

<?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>

	<environments default="dev">
		<environment id="dev">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
				<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
				<property name="username" value=""/>
				<property name="password" value=""/>
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<mapper resource="mapper/member.xml"/>
	</mappers>
</configuration>

 

 

- 사용할 수 있는 기본적인 태그들

<select> ~~~ </select>
<insert> ~~~ </insert>
<update> ~~~ </update>
<delete> ~~~ </delete>



- 위 태그에서 사용되는 주요 속성들
1) id : 해당 태그를 호출할 때 namespace값과 연결하여 사용하는 id값

2) parameterType : 파라미터 객체의 타입정보를 지정한다.
(보통 VO클래스명, 자바의 데이터타입 등이 사용된다. ALias명 사용 가능함.)

3) resultType : select문을 실행한 결과값을 담을 객체타입을 지정한다.
(보통 VO클래스명, 자바의 데이터타입 등이 사용된다. ALias명 사용 가능함.)

4) resultMap : 결과 레코드 컬럼명과 VO객체의 속성명이 다를 경우에 적절한 매핑을 위해 사용한다.

 

 

 

  • insert
<?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="memberTest">

	<insert id="insertMember" parameterType="kr.or.ddit.member.vo.MemberVO">
		insert into mymember 
		(mem_id, mem_name, mem_tel, mem_addr) 
		values (#{memId}, #{memName}, #{memTel}, #{memAddr})
	</insert>
	
</mapper>

 

package kr.or.ddit.basic;

import java.io.IOException;
import java.io.Reader;
import java.nio.charset.Charset;

import org.apache.ibatis.exceptions.PersistenceException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import kr.or.ddit.member.vo.MemberVO;

public class MybatisTest {
	public static void main(String[] args) {
		
		// 1. myBatis의 환경설정 파일을 읽어와 실행시킨다.
		SqlSessionFactory sqlSessionFactory = null;
		
		try {
			// 1-1. xml 설정문서 읽어오기
			Charset charset = Charset.forName("UTF-8"); // 설정파일의 한글처리를 위해서...
			Resources.setCharset(charset);
			
			// 반드시 설정 파일을 넣어야 함. xml형식 고정
			Reader rd = Resources.getResourceAsReader("config/mybatis-config.xml");
			
			// 1-2. 위에서 생성한 Reader객체를 사용하여 SqlSessionFactory 객체 생성한다.
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(rd);
			
			rd.close(); // 사용한 스트림 객체 닫아주기
			
			
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		/////////////////////////////////////////////////////////////////////
		
		// 2. 실행한 SQL문이 있는 쿼리문을 지정하여 원하는 작업을 수행한다.
		
		// 2-1. insert작업 연습
		System.out.println("insert 작업 시작...");
		
		// 1) 저장할 데이터를 VO에 담는다.
		MemberVO mv = new MemberVO();
		mv.setMemId("d001");
		mv.setMemName("강감찬");
		mv.setMemTel("111-111");
		mv.setMemAddr("경남 진주시");
		
		// SqlSession객체를 이용하여 해당 쿼리문을 수행시킨다.
		// ex) SqlSession객체.insert("namespace값.id값", 파라미터객체);
		SqlSession sqlSession = sqlSessionFactory.openSession(false); // 오토커밋 여부 지정 >> false 이기에 따로 커밋 처리 해줘야함.
		
		try {
			int cnt = sqlSession.insert("memberTest.insertMember", mv);
			
			if(cnt > 0) {
				System.out.println("insert 작업 성공!");
				
				sqlSession.commit(); // 커밋... / 커밋 하지 않을 때 close 할 시 롤백이 진행됨.
				
			} else {
				System.out.println("insert 작업 실패!!!");
			}
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			sqlSession.close();
		}
	}
}

 

결과 화면1

 

 

 

  • update
<?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="memberTest">

	<update id="updateMember" parameterType="kr.or.ddit.member.vo.MemberVO">
		update mymember
		set mem_name = #{memName}, 
		mem_tel = #{memTel}, 
		mem_addr = #{memAddr} 
		where mem_id = #{memId}
	</update>
    
</mapper>

 

package kr.or.ddit.basic;

import java.io.IOException;
import java.io.Reader;
import java.nio.charset.Charset;
import java.time.Period;
import java.util.List;

import org.apache.ibatis.exceptions.PersistenceException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import kr.or.ddit.member.vo.MemberVO;

public class MybatisTest {
	public static void main(String[] args) {
		
		// 1. myBatis의 환경설정 파일을 읽어와 실행시킨다.
		SqlSessionFactory sqlSessionFactory = null;
		
		try {
			// 1-1. xml 설정문서 읽어오기
			Charset charset = Charset.forName("UTF-8"); // 설정파일의 한글처리를 위해서...
			Resources.setCharset(charset);
			
			// 반드시 설정 파일을 넣어야 함. xml형식 고정
			Reader rd = Resources.getResourceAsReader("config/mybatis-config.xml");
			
			// 1-2. 위에서 생성한 Reader객체를 사용하여 SqlSessionFactory 객체 생성한다.
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(rd);
			
			rd.close(); // 사용한 스트림 객체 닫아주기
			
			
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		/////////////////////////////////////////////////////////////////////
		
		// 2. 실행한 SQL문이 있는 쿼리문을 지정하여 원하는 작업을 수행한다.
		
		// 2-2. update 연습
		System.out.println("update작업 시작...");
		
		MemberVO mv2 = new MemberVO();
		mv2.setMemId("d001");
		mv2.setMemName("박채연");
		mv2.setMemTel("555-555");
		mv2.setMemAddr("부산시");
		
		sqlSession = sqlSessionFactory.openSession();
		
		try {
			// update()의 반환값도 성공한 레코드 수이다.
			int cnt = sqlSession.update("memberTest.updateMember", mv2);
			
			if(cnt > 0) {
				System.out.println("update작업 성공");
			} else {
				System.out.println("update작업 실패!!!");
			}
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			sqlSession.close();
		}
	}
}

 

결과 화면2

 

 

 

  • delete

넘어오는 게 하나일 경우 어떤 글자를 쓰든 신경쓰지 않고 집어 넣음

 

<?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="memberTest">
	
	<delete id="deleteMember" parameterType="String">
		delete from mymember where mem_id = #{오병준}
	</delete>
	
</mapper>

 

package kr.or.ddit.basic;

import java.io.IOException;
import java.io.Reader;
import java.nio.charset.Charset;
import java.time.Period;
import java.util.List;

import org.apache.ibatis.exceptions.PersistenceException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import kr.or.ddit.member.vo.MemberVO;

public class MybatisTest {
	public static void main(String[] args) {
		
		// 1. myBatis의 환경설정 파일을 읽어와 실행시킨다.
		SqlSessionFactory sqlSessionFactory = null;
		
		try {
			// 1-1. xml 설정문서 읽어오기
			Charset charset = Charset.forName("UTF-8"); // 설정파일의 한글처리를 위해서...
			Resources.setCharset(charset);
			
			// 반드시 설정 파일을 넣어야 함. xml형식 고정
			Reader rd = Resources.getResourceAsReader("config/mybatis-config.xml");
			
			// 1-2. 위에서 생성한 Reader객체를 사용하여 SqlSessionFactory 객체 생성한다.
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(rd);
			
			rd.close(); // 사용한 스트림 객체 닫아주기
			
			
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		/////////////////////////////////////////////////////////////////////
		
		// 2. 실행한 SQL문이 있는 쿼리문을 지정하여 원하는 작업을 수행한다.
		
		// 2-3. delete 연습
		System.out.println("delete 작업 시작...");
		
		sqlSession = sqlSessionFactory.openSession();
		
		try {
			int cnt = sqlSession.delete("memberTest.deleteMember", "d001");
			
			if(cnt > 0) {
				System.out.println("삭제 작업 성공!");
				sqlSession.commit();
			} else {
				System.out.println("삭제 작업 실패!!!");
				sqlSession.rollback();
			}
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			sqlSession.close();
		}
	}
}

 

결과 화면3

 

 

 

  • selectList

select의 경우 실행한 결과값을 담을 객체타입 지정이 필수다.

 

<?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="memberTest">
	
	<select id="selectAllMember" resultType="kr.or.ddit.member.vo.MemberVO">
		select mem_id as memId, 
			mem_name as memName, 
			mem_tel as memTel, 
			mem_addr as memAddr 
		from mymember
	</select>
	
</mapper>

 

package kr.or.ddit.basic;

import java.io.IOException;
import java.io.Reader;
import java.nio.charset.Charset;
import java.time.Period;
import java.util.List;

import org.apache.ibatis.exceptions.PersistenceException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import kr.or.ddit.member.vo.MemberVO;

public class MybatisTest {
	public static void main(String[] args) {
		
		// 1. myBatis의 환경설정 파일을 읽어와 실행시킨다.
		SqlSessionFactory sqlSessionFactory = null;
		
		try {
			// 1-1. xml 설정문서 읽어오기
			Charset charset = Charset.forName("UTF-8"); // 설정파일의 한글처리를 위해서...
			Resources.setCharset(charset);
			
			// 반드시 설정 파일을 넣어야 함. xml형식 고정
			Reader rd = Resources.getResourceAsReader("config/mybatis-config.xml");
			
			// 1-2. 위에서 생성한 Reader객체를 사용하여 SqlSessionFactory 객체 생성한다.
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(rd);
			
			rd.close(); // 사용한 스트림 객체 닫아주기
			
			
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		/////////////////////////////////////////////////////////////////////
		
		// 2. 실행한 SQL문이 있는 쿼리문을 지정하여 원하는 작업을 수행한다.
		
		// 2-4. select 연습
		// 1) 응답결과가 여러개일 경우
		System.out.println("select 연습 시작(결과가 여러개인 경우)...");
		
		// 응답결과가 여러개일 경우에는 selectList를 사용한다.
		sqlSession = sqlSessionFactory.openSession(true);
		
		try {
			List<MemberVO> memList = 
					sqlSession.selectList("memberTest.selectAllMember");
			
			for (MemberVO mv3 : memList) {
				System.out.println("ID : " + mv3.getMemId());
				System.out.println("이름 : " + mv3.getMemName());
				System.out.println("전화 : " + mv3.getMemTel());
				System.out.println("주소 : " + mv3.getMemAddr());
				System.out.println("=========================================");
			}
			
			System.out.println("출력 작업 끝...");
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			sqlSession.close();
		}		
	}
}

 

결과 화면4

 

 

 

  • selectOne
<?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="memberTest">

	<select id="getMember" resultType="kr.or.ddit.member.vo.MemberVO">
		select mem_id as memId, 
			mem_name as memName, 
			mem_tel as memTel, 
			mem_addr as memAddr 
		from mymember
		where mem_id = #{memId}
	</select>
    
</mapper>

 

package kr.or.ddit.basic;

import java.io.IOException;
import java.io.Reader;
import java.nio.charset.Charset;
import java.time.Period;
import java.util.List;

import org.apache.ibatis.exceptions.PersistenceException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import kr.or.ddit.member.vo.MemberVO;

public class MybatisTest {
	public static void main(String[] args) {
		
		// 1. myBatis의 환경설정 파일을 읽어와 실행시킨다.
		SqlSessionFactory sqlSessionFactory = null;
		
		try {
			// 1-1. xml 설정문서 읽어오기
			Charset charset = Charset.forName("UTF-8"); // 설정파일의 한글처리를 위해서...
			Resources.setCharset(charset);
			
			// 반드시 설정 파일을 넣어야 함. xml형식 고정
			Reader rd = Resources.getResourceAsReader("config/mybatis-config.xml");
			
			// 1-2. 위에서 생성한 Reader객체를 사용하여 SqlSessionFactory 객체 생성한다.
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(rd);
			
			rd.close(); // 사용한 스트림 객체 닫아주기
			
			
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		/////////////////////////////////////////////////////////////////////
		
		// 2. 실행한 SQL문이 있는 쿼리문을 지정하여 원하는 작업을 수행한다.
		
		// 2-4. select 연습
		// 1) 응답결과가 여러개일 경우
        
		// 2) 응답결과가 1개일 경우
		System.out.println("select 연습(결과값이 1개가 확실한 경우)...");
		
		sqlSession = sqlSessionFactory.openSession(true);
		
		try {
			MemberVO mv4 = sqlSession.selectOne("memberTest.getMember", "a001");
			
			System.out.println("ID : " + mv4.getMemId());
			System.out.println("이름 : " + mv4.getMemName());
			System.out.println("전화 : " + mv4.getMemTel());
			System.out.println("주소 : " + mv4.getMemAddr());
			System.out.println("=========================================");
			
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			sqlSession.close();
		}
	}
}

 

결과 화면5

 

 

 

회원정보 관리 프로그램

 

=> Dao의 기능을 하는 Mybatis를 이용하여 변경한다.

기존에 있던 프로그램을 응용하여 추가 및 수정한다.

 

package kr.or.ddit.member.dao;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.exceptions.PersistenceException;
import org.apache.ibatis.session.SqlSession;

import kr.or.ddit.member.vo.MemberVO;
import kr.or.ddit.util.MyBatisUtil;

public class MemberDaoImpl implements IMemberDao{

	private static IMemberDao memDao;
	
	private MemberDaoImpl() {
		
	}
	
	public static IMemberDao getInstance() {
		if(memDao == null) {
			memDao = new MemberDaoImpl();
		}
		return memDao;
	}
	
	@Override
	public int insertMember(MemberVO mv) {
		
		SqlSession session = MyBatisUtil.getSqlSession();
		int cnt = 0;
		
		try {
			cnt = session.insert("member.insertMember", mv);
			
			if(cnt > 0) {
				session.commit();
			}
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			session.close();
		}
		return cnt;
	}

	@Override
	public int updateMember(MemberVO mv) {
		SqlSession session = MyBatisUtil.getSqlSession();
		int cnt = 0;
		
		try {
			cnt = session.update("member.updateMember", mv);
			
			if(cnt > 0) {
				session.commit();
			}
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			session.close();
		}
		return cnt;
	}

	@Override
	public boolean checkMember(String memId) {
		
		SqlSession session = MyBatisUtil.getSqlSession(true);
		
		boolean isExist = false;
		
		try {
			int cnt = session.selectOne("member.checkMember", memId);
			
			if(cnt > 0) {
				isExist = true;
			}
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			session.close();
		}
		
		return isExist;
	}

	@Override
	public int deleteMember(String memId) {
		SqlSession session = MyBatisUtil.getSqlSession();
		int cnt = 0;
		
		try {
			cnt = session.delete("member.deleteMember", memId);
			
			if(cnt > 0) {
				session.commit();
			}
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			session.close();
		}
		return cnt;
	}

	@Override
	public List<MemberVO> getAllMember() {
		
		SqlSession session = MyBatisUtil.getSqlSession(true);
		
		List<MemberVO> memList = new ArrayList<MemberVO>();
		
		try {
			memList = session.selectList("member.selectAllMember");
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			session.close();
		}
		
		return memList;
	}

	@Override
	public List<MemberVO> searchMember(MemberVO mv) {
SqlSession session = MyBatisUtil.getSqlSession(true);
		
		List<MemberVO> memList = new ArrayList<MemberVO>();
		
		try {
			memList = session.selectList("member.searchMember", mv);
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
		} finally {
			session.close();
		}
		
		return memList;
	}

}

 

package kr.or.ddit.util;

import java.io.IOException;
import java.io.Reader;
import java.nio.charset.Charset;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {
	
	private static SqlSessionFactory sqlSessionFactory;
	
	static {
		try {
			// 1-1. xml 설정문서 읽어오기
			Charset charset = Charset.forName("UTF-8"); // 설정파일의 한글처리를 위해서...
			Resources.setCharset(charset);
			
			// 반드시 설정 파일을 넣어야 함. xml형식 고정
			Reader rd = Resources.getResourceAsReader("config/mybatis-config.xml");
			
			// 1-2. 위에서 생성한 Reader객체를 사용하여 SqlSessionFactory 객체 생성한다.
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(rd);
			
			rd.close(); // 사용한 스트림 객체 닫아주기
			
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
	
	/**
	 * SqlSesson객체를 제공하는 메서드
	 * @return SqlSession객체
	 */
	public static SqlSession getSqlSession() {
		return sqlSessionFactory.openSession();
	}
	
	/**
	 * SqlSession객체를 제공하는 메서드
	 * @param autoCommit 오토커밋 여부
	 * @return SqlSession객체
	 */
	public static SqlSession getSqlSession(boolean autoCommit) {
		return sqlSessionFactory.openSession(autoCommit);
	}
	
}

 

member.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">

<!-- 
	이 영역에 sql문에 맞는 태그를 사용하여 SQL문을 기술한다.
	
	사용할 수 있는 기본적인 태그들
	<select> ~~~ </select>
	<insert> ~~~ </insert>
	<update> ~~~ </update>
	<delete> ~~~ </delete>
	
	위 태그에서 사용되는 주요 속성들
	
	1) id : 해당 태그를 호출할 때 namespace값과 연결하여 사용하는 id값
	
	2) parameterType : 파라미터 객체의 타입정보를 지정한다.
					   (보통 VO클래스명, 자바의 데이터타입 등이 사용된다. ALias명 사용 가능함.)
	
	3) resultType : select문을 실행한 결과값을 담을 객체타입을 지정한다.
					(보통 VO클래스명, 자바의 데이터타입 등이 사용된다. ALias명 사용 가능함.)

	4) resultMap : 결과 레코드 컬럼명과 VO객체의 속성명이 다를 경우에 적절한 매핑을 위해 사용한다.
-->

	<insert id="insertMember" parameterType="kr.or.ddit.member.vo.MemberVO">
		insert into mymember 
		(mem_id, mem_name, mem_tel, mem_addr) 
		values (#{memId}, #{memName}, #{memTel}, #{memAddr})
	</insert>
	
	<update id="updateMember" parameterType="kr.or.ddit.member.vo.MemberVO">
		update mymember
		set mem_name = #{memName}, 
		mem_tel = #{memTel}, 
		mem_addr = #{memAddr} 
		where mem_id = #{memId}
	</update>
	
	<delete id="deleteMember" parameterType="String">
		delete from mymember where mem_id = #{오병준}
	</delete>
	
	<select id="selectAllMember" resultType="kr.or.ddit.member.vo.MemberVO">
		select mem_id as memId, 
			mem_name as memName, 
			mem_tel as memTel, 
			mem_addr as memAddr 
		from mymember
	</select>
	
	<select id="getMember" resultType="kr.or.ddit.member.vo.MemberVO">
		select mem_id as memId, 
			mem_name as memName, 
			mem_tel as memTel, 
			mem_addr as memAddr 
		from mymember
		where mem_id = #{memId}
	</select>
	
	<select id="checkMember" resultType="int">
		select count(*) as cnt
		from mymember
		where mem_id = #{memId}
	</select>
	
	<select id="searchMember">
		select * from mymember where 1=1 
			
			<if test='memId != null and memId != ""'>
				and mem_id = #{memId}
			</if>
			<if test='memName != null and !memName.equals("")'>
				and mem_name = #{memName}
			</if>
			<if test='memTel != null and !memTel.equals("")'>
				and mem_tel = #{memTel}
			</if>
			<if test='memAddr != null and !memAddr.equals("")'>
				and mem_addr like '%' || #{memAddr} || '%' 
			</if>
	</select>
	
</mapper>

 

package kr.or.ddit.member.service;

import java.util.List;

import kr.or.ddit.member.dao.IMemberDao;
import kr.or.ddit.member.dao.MemberDaoImpl;
import kr.or.ddit.member.dao.MemberDaoImplForJDBC;
import kr.or.ddit.member.vo.MemberVO;

public class MemberServiceImpl implements IMemberService{

	private static IMemberService memService;
	
	private IMemberDao memDao;
	
	public static IMemberService getInstance() {
		if(memService == null) {
			memService = new MemberServiceImpl();
		}
		return memService;
	}
	
	private MemberServiceImpl() {
		memDao = MemberDaoImpl.getInstance();
	}

	@Override
	public int registMember(MemberVO mv) {
		int cnt = memDao.insertMember(mv);
		return cnt;
	}

	@Override
	public int modifyMember(MemberVO mv) {
		int cnt = memDao.updateMember(mv);
		return cnt;
	}

	@Override
	public boolean checkMember(String memId) {
		return memDao.checkMember(memId);
	}

	@Override
	public int removeMember(String memId) {
		int cnt = memDao.deleteMember(memId);
		return cnt;
	}

	@Override
	public List<MemberVO> displayMember() {
		return memDao.getAllMember();
	}

	@Override
	public List<MemberVO> searchMember(MemberVO mv) {
		return memDao.searchMember(mv);
	}
}

 

 

반응형

'자바' 카테고리의 다른 글

[Java 고급] 21장 W3C DOM, 유스케이스 다이어그램  (0) 2024.02.13
[Java 고급] 20장 로깅  (0) 2024.02.08
[Java 고급] 18장 Singleton 패턴  (0) 2024.02.07
[Java 고급] 17장 MVC 패턴  (0) 2024.02.06
[Java 고급] 16장 JDBC  (0) 2024.02.02