1. User.xml
필요한 SQL문과 해당 SQL문에 해당하는 ID를 지정한다.
<?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>
<!-- Use type aliases to avoid typing the full classname every time. -->
<typeAlias alias="User" type="spring.dto.User"/>
<!-- Result maps describe the mapping between the columns returned
from a query, and the class properties. A result map isn't
necessary if the columns (or aliases) match to the properties
exactly. -->
<resultMap id="UserResult" class="spring.dto.User">
<result property="userId" column="user_id"/>
<result property="userPw" column="user_pwd"/>
<result property="userName" column="user_name"/>
</resultMap>
<!-- Select with no parameters using the result map for Account class. -->
<select id="selectAll" resultMap="UserResult">
select * from user1
</select>
<!-- A simpler select example without the result map. Note the
aliases to match the properties of the target result class. -->
<!-- 방법1. 주의) 별칭은 반드시 property 이름과 매칭 -->
<!-- <select id="selectUser" parameterClass="String" resultClass="User"> -->
<!-- select -->
<!-- user_id as userId, -->
<!-- user_pwd as userPw, -->
<!-- user_name as userName -->
<!-- from user1 -->
<!-- where user_id = #userId# -->
<!-- </select> -->
<!-- 방법2. ResultMap으로 결과값 매핑 -->
<select id="selectUser" parameterClass="String" resultMap="UserResult">
select * from user1 where user_id = #userId#
</select>
<!-- Insert example, using the Account parameter class -->
<insert id="insertUser" parameterClass="User">
insert into user1 (user_id, user_pwd, user_name)
values (#userId#, #userPw#, #userName#)
</insert>
<!-- Update example, using the Account parameter class -->
<update id="updateUser" parameterClass="User">
update user1 set
user_pwd = #userPw#,
user_name = #userName#
where
user_id = #userId#
</update>
<!-- Delete example, using an integer as the parameter class -->
<delete id="deleteUser" parameterClass="String">
delete from user1 where user_id = #userId#
</delete>
</sqlMap>
2. UserDaoImpl.java
iBATIS의 xml에서 지정한 id를 불러와서 사용한다.
<?xml version="1.0" encoding="UTF-8" ?>
package spring.ibatis;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import spring.dto.User;
public class UserDaoImpl {
// SqlMapClient 클래스는 Mapper를 생성하는 클래스이다.
// static 멤버로 선언 - 미리 메모리 할당
private static SqlMapClient sqlMapper;
static{
try {
// 1. SqlMapConfig.xml 파일의 설정 내용을 가져온다.
Reader reader = Resources.getResourceAsReader("dbinfo/SqlMapConfig.xml");
// 2. Mapper 객체 생성하기
sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
UserDaoImpl iBatis = new UserDaoImpl();
iBatis.start();
}
public void start(){
Scanner sc = new Scanner(System.in);
boolean flag = true;
String id = "";
String pw = "";
String name = "";
User user = new User();
while(flag){
System.out.println("=================");
System.out.println("1. 프로그램 종료.");
System.out.println("2. 모든 유저 출력");
System.out.println("3. 하나의 유저 출력");
System.out.println("4. 유저 추가");
System.out.println("5. 유저 정보 삭제");
System.out.println("6. 유저 정보 수정");
System.out.println("=================");
System.out.print("번호를 입력하세요: ");
int num = Integer.parseInt(sc.nextLine());
switch(num){
case 1:
System.out.println("프로그램을 종료합니다.");
System.exit(0);
break;
case 2:
try {
List<User> list;
list = sqlMapper.queryForList("selectAll");
for(User user1 : list){
System.out.println("사용자 ID : "+user1.getUserId()+"\t"
+"사용자 비밀번호 : "+user1.getUserPw()+"\t"
+"사용자 이름 : "+user1.getUserName());
}
} catch (SQLException e) {e.printStackTrace();}
break;
case 3:
System.out.print("검색할 아이디를 입력하세요: ");
id = sc.nextLine();
try {
user = (User)sqlMapper.queryForObject("selectUser", id);
if(user == null) {
System.out.println("검색된 레코드가 없습니다.");
}else{
System.out.println("사용자 ID : "+user.getUserId()+"\t"
+"사용자 비밀번호 : "+user.getUserPw()+"\t"
+"사용자 이름 : "+user.getUserName());
}
} catch (SQLException e) {e.printStackTrace();}
break;
case 4:
System.out.println("신규 유저 추가");
System.out.println("아이디를 입력하세요: ");
id = sc.nextLine();
System.out.println("비밀번호를 입력하세요: ");
pw = sc.nextLine();
System.out.println("이름을 입력하세요: ");
name = sc.nextLine();
user.setUserId(id);
user.setUserPw(pw);
user.setUserName(name);
try {
sqlMapper.insert("insertUser", user);
} catch (SQLException e) {e.printStackTrace();}
break;
case 5:
System.out.print("삭제할 아이디를 입력하세요: ");
id = sc.nextLine();
try {
user = (User)sqlMapper.queryForObject("selectUser", id);
if(user == null) {
System.out.println("삭제할 레코드가 없습니다.");
}else{
sqlMapper.delete("deleteUser", id);
System.out.println(id + "가 삭제되었습니다.");
}
} catch (SQLException e) {e.printStackTrace();}
break;
case 6:
System.out.print("수정할 아이디를 입력하세요: ");
id = sc.nextLine();
try {
user = (User)sqlMapper.queryForObject("selectUser", id);
if(user == null) {
System.out.println("수정할 레코드가 없습니다.");
}else{
System.out.println("수정할 비밀번호를 입력하세요: ");
user.setUserPw(sc.nextLine());
System.out.println("수정할 이름을 입력하세요: ");
user.setUserName(sc.nextLine());
sqlMapper.update("updateUser", user);
System.out.println("수정완료");
}
} catch (SQLException e) {e.printStackTrace();}
break;
default:
System.out.println("잘못된 번호를 입력하셨습니다.");
break;
}
}
}
}
' Spring Framework' 카테고리의 다른 글
스프링에서 파일업로드 하기 (1) | 2016.04.15 |
---|---|
MyBatis 실습: DB연동 구조 (완성) (0) | 2016.04.12 |
iBATIS 실습: DB연동 구조 (미완) (0) | 2016.04.12 |
스프링 JDBC 연동을 통한 쇼핑몰: 커넥션 풀 (0) | 2016.04.11 |
스프링 JDBC 연동을 통한 쇼핑몰: 리스트, 세부항목 (0) | 2016.04.11 |