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>