ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3. MyBatis로 값 전달하기.
    Develpment/MyBatis 2020. 9. 13. 21:20

    1. Mapper에서 Select, Insert, Update 사용해보기


     mapter.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?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="mem">
      <select id="total" resultType="mybatis.vo.MemVO">
        select * from hr.member_t
      </select>
      
      <!-- 이름을 하나 받아서 검색하는 SELECT -->
      <!-- 파라메터 타입이 String 또는 기본 자료형이면 변수명을 마음대로 사용할 수 있다. -->
      <select id="searchName" resultType="mybatis.vo.MemVO" parameterType="java.lang.String">
        select * from hr.member_t where mem_name = #{strName}
        <!-- select * from hr.member_t where mem_name LIKE '%'||#{strName}||'%' -->
      </select>
      
      <!-- 회원 검색 -->
      <select id="searchID" resultType="mybatis.vo.MemVO" parameterType="java.util.Map">
        select * from hr.member_t where mem_id = #{id} and mem_pwd = #{pwd}
        <!-- select * from hr.member_t where mem_name LIKE '%'||#{strName}||'%' -->
      </select>
      
      <!-- 회원 추가 -->
      <insert id="addMem" parameterType="java.util.Map">
          insert into hr.member_t (mem_id, mem_pwd, mem_name, mem_email, mem_phone, mem_reg_date)
          values (#{id}, #{pwd}, #{name},#{email},#{phone}, sysdate)
      </insert>
      
      <!-- 회원 수정 -->
      <update id="updateMem" parameterType="java.util.Map">
          update hr.member_t set mem_pwd=#{pwd}, mem_name=#{name}, mem_email=#{email}, mem_phone=#{phone}, mem_reg_date=sysdate
          where mem_id=#{id}
      </update>
    </mapper>
    cs

     * Query는 각자 DB에 맞춰서 사용할것!

     * parameterType 으로 MyBatis에서 전달받을 값을 지정.

    - 단일값을 전달 받을 경우에는 변수명을 마음대로 사용가능. #{변수명}

    - 여러값을 전달받을경우 (Map)에는 전달에 사용한 Key 값이 변수명이 된다.


     사용예제 ( 이름검색, 회원추가 예제)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private SqlSessionFactory factory;
     
    private void initMyBatis() {
       try {
            Reader r = Resources.getResourceAsReader("mybatis/config/config.xml");
            factory = new SqlSessionFactoryBuilder().build(r);
            r.close();
                
            setTitle("준비완료!!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    cs

     

    1
    2
    3
    4
    SqlSession ss = factory.openSession();
            
    //받은 strName의 값을 MyBatis환경으로 보내어 SQL문을 수행하고 결과를 받는다.
    List<MemVO> list = ss.selectList("mem.searchName""홍길동");
    ss.close();
    cs

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // 인자로 받은 값들은 MyBatis에 묶어서 보내야 한다.
    // map의 5개의 값들을 Map 구조로 묶었다. 이때 사용한 key가 MaBatis에서 사용되는 변수명이 된다.
    HashMap<StringString> map = new HashMap<>();
    map.put("id", s_id);
    map.put("pwd", s_pwd);
    map.put("name", s_name);
    map.put("email", s_email);
    map.put("phone", s_phone);
     
    SqlSession ss = null;
     
    //세션
    try {
        ss = factory.openSession(true);
     
        ss.insert("mem.addMem", map);
     
        JOptionPane.showMessageDialog(this"정상 처리 되었습니다.");
        isStatus = true;
    catch (Exception e) {
        JOptionPane.showMessageDialog(this"회원등록 오류...");
    finally{
        if(ss != null)
            ss.close();
    }
    cs


    'Develpment > MyBatis' 카테고리의 다른 글

    2. 기본 사용법 (MySql, Oracle)  (0) 2020.09.13
    1. 기본 설정 (MyBatis, eclipse, MySql)  (0) 2020.09.13

    댓글

Designed by Tistory.