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;

}

}

}

}





























Posted by netyhobby
,