mvc.member (xml이용)

조수경·2021년 11월 29일
0

고급자바

목록 보기
80/97

MemberDaoImpl

package kr.or.ddit.mvc.dao;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import com.ibatis.sqlmap.client.SqlMapClient;

import kr.or.ddit.mvc.vo.MemberVO;
import kr.or.ddit.util.SqlMapClientFactory;

public class MemberDaoImpl implements IMemberDao {
	private SqlMapClient smc = null;
	
	// 1번
	private static MemberDaoImpl dao;
	
	// 2번
	private MemberDaoImpl(){
		smc = SqlMapClientFactory.getSqlMapClient();   // SqlMapClient객체 생성
	}
	
	// 3번
	public static MemberDaoImpl getInstance(){
		if(dao==null) dao = new MemberDaoImpl();
		
		return dao;
	}
	

	@Override
	public int insertMember(MemberVO memvo) {
		
		int cnt = 0;   // 반환값이 저장될 변수
		
		try {
			Object obj = smc.insert("mymember.insertMember", memvo);
			if(obj==null) { // insert작업 성공
				cnt = 1;
			}
			
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		} 
		
		return cnt;
	}

	@Override
	public int deleteMember(String memId) {
				
		int cnt = 0; // 반환값 변수
		
		try {
			cnt = smc.delete("mymember.deleteMember", memId);
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		}
		
		return cnt;
	}

	@Override
	public int updateMember(MemberVO memvo) {
		int cnt = 0; // 반환값 변수
		
		try {
			cnt = smc.update("mymember.updateMember", memvo);
			
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		} 
		
		return cnt;
	}

	@Override
	public List<MemberVO> getAllMember() {
		
		List<MemberVO> memList = null;  // 반환값이 저장될 변수 선언
		
		try {
			memList = smc.queryForList("mymember.getAllMember");
			
		} catch (SQLException e) {
			memList = null;
			e.printStackTrace();
		} 

		return memList;
	}

	@Override
	public int getMemberCount(String memId) {
		
		int count = 0; // 반환값 저장 변수
		
		try {
			count = (int) smc.queryForObject("mymember.getMemberCount", memId);
			
		} catch (SQLException e) {
			count = 0;
			e.printStackTrace();
		} 
		
		return count;
	}

	@Override
	public int updateMember2(Map<String, String> paramMap) {
		
		int cnt = 0; 	// 반환값 저장 변수
		
		try {
			
			cnt = smc.update("mymember.updateMember2", paramMap);
			
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		} 
		
		return cnt;
	}

}


mymember xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMap
  PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
  "http://ibatis.apache.org/dtd/sql-map-2.dtd">
  
  <sqlMap namespace="mymember">
  
  <select id="getCountMember" resultClass="int"  parameterClass="String">
    select count(mymember_id) from mymember
    where mymember_id = #mymember_id#
  </select>
  
  <insert id="insertMember" parameterClass="memberVo">
  insert into mymember (mem_id, mem_name, mem_pass, mem_tel, mem_addr) 
  values(#mem_id#, #mem_name#, #mem_pass#, #mem_tel#, #mem_addr#) 
  </insert>
  
  <delete id="deleteMember" parameterClass="String">
  delete from mymember where mem_id = #mem_id#
  </delete>
  
  <update id="updateMember" parameterClass="memberVo">
  update mymember
         set mem_name = #mem_name#, mem_pass = #mem_pass#, 
         mem_tel = #mem_tel#, mem_addr = #mem_addr#
  where mem_id = #mem_id#
  </update>
  
  <select id="getAllMember" resultClass="memberVo">
  select * from mymember
  </select>
  
  <select id="getMemberCount" parameterClass="string" resultClass="int">
  select count(*) cnt from mymember
   where mem_id = #mem_id#
  </select>
  
  <!--  
     Map객체를 파라미터로 받아서 처리할 때 변수명 역할은 Map의 key값으로 한다.
     
          파라미터로 가져온 값을 컬럼명등의 자리에서 사용할 경우에는 
          달러($) 기호를 사용해서 나타낸다.
          예) $변수명$ 또는 $Map의key값$
          
  -->
  <update id="updateMember2" parameterClass="java.util.Map">
  <!--  update mymember set 수정할 컬럼명 = 수정할 값 where mem_id = 수정할 회원Id -->
  update mymember 
     set $field$ = #data# 
   where mem_id = #memid# 
  </update>
  
  </sqlMap>

sqlMapConfig

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMapConfig
   PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
   "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
   
 <sqlMapConfig>
   <!-- 
     DB와 연결하는 정보를 properties파일에 설정해 놓고
          이 properties파일의 내용을 읽어올 수 있도록 설정한다.
    -->
   <properties resource="kr/or/ddit/config/dbinfo.properties"/>
   
   <!-- 
     SQL문이 저장된 xml문서에서  실행할 쿼리문을 찾을때
          이  xml문서의 네임스페이스와 SQL문이 작성된 태그의 id속성값을 
          연결해서 찾도록 설정한다.
    -->
    <settings useStatementNamespaces = "true"/>
    
    <!-- 
      쿼리문에 사용할 VO객체는 패키지 이름을 포함한 전체 이름을
      사용해야 하는데 그렇게 되면 문장이 너무 길어질 수 있기 때문에
      전체 이름을 대신할 alias를 설정할 수 있다.
    
         형식) <typeAlias alias="alias명" type="클래스의 풀네임"/>
     -->
     
     <typeAlias alias ="lprodVo" type="kr.or.ddit.vo.LprodVO"/>
     <typeAlias alias ="memberVo" type="kr.or.ddit.mvc.vo.MemberVO"/>
     <typeAlias alias ="boardVo" type="kr.or.ddit.board.vo.JdbcBoardVO"/>
     
    
    
    <!-- DB와의 연결을 처리하는 부분 -->
	<transactionManager type="JDBC">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver" value="${driver}"/>
			<property name="JDBC.ConnectionURL" value="${url}"/>
			<property name="JDBC.Username" value="${user}"/>
			<property name="JDBC.Password" value="${pass}"/>
       </dataSource>
	</transactionManager>   
	
	 
    <!-- 실행할 SQL문 등록하기 -->
    <!-- 
        실행할 SQL문은 xml문서로 따로 만든 후 그 xml문서를
        아래와 같이 등록하면 된다.
        
        형식) <sqlMap resource="경로명/파일명.xml"/>
     -->
     
     <sqlMap resource="kr/or/ddit/ibatis/mapper/lprodTest.xml"/> 
     <sqlMap resource="kr/or/ddit/ibatis/mapper/jdbc2ibatis.xml"/>
  	 <sqlMap resource="kr/or/ddit/ibatis/mapper/memberTest.xml"/>
  	 <sqlMap resource="kr/or/ddit/ibatis/mapper/Board.xml"/>
  

 </sqlMapConfig>
profile
신입 개발자 입니다!!!

0개의 댓글

관련 채용 정보