본문 바로가기
KOSTA교육/수업

[49/100] 240624

by 이원혁 2024. 6. 24.
반응형

오늘은 MyBatis를 이용해서 dao를 out 시켰다.

 

package com.lec08.dao;

import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class CtxMybatisCallTest {

    public static void main(String[] args) {
        
        String xmlFile08 = "C:\\IT\\S3917_J11\\workspace_sts3\\spring3_prj\\src\\main\\webapp\\WEB-INF\\spring\\lec08-servlet-context.xml";
        ApplicationContext ctx = new FileSystemXmlApplicationContext(xmlFile08);

        //----------------------------------------------------------------------------
        // Mybatis DBCP 설정을 통한 DB 연결
        //   - 설정파일 : src/main/resources/mybatis-context.xml
        //   - 매퍼파일 : src/main/resources/user-map.xml
        //----------------------------------------------------------------------------
        // Mybatis session build
        String path = "mybatis-context-lec08.xml";
        Reader reader; 
        try {
            reader = Resources.getResourceAsReader(path);
            SqlSessionFactory sqlSessionFactory  = new SqlSessionFactoryBuilder().build(reader);
            if(sqlSessionFactory == null)
                System.out.println("err");
            else
                System.out.println("Mybatis session build ok");
        
            SqlSession session = sqlSessionFactory.openSession();
            UserVO uvo = new UserVO();
            
            // 한명 출력
            uvo.setUser_seq(4);
            uvo = (UserVO) session.selectOne("userNameSpace.selectUserOne", uvo);
            System.out.println("한명출력: " + uvo.getUser_name());
            System.out.println();
            
            // 전체 출력
            List<UserVO> userList = session.selectList("userNameSpace.selectUser");
            System.out.println("전체출력:");
            for (UserVO user : userList) {
                System.out.println(user.getUser_id() + " " + user.getUser_name() + " " + user.getUser_gubun() + " " + user.getRegdate());
            }
            System.out.println();
            
            // 삽입
            UserVO newUser = new UserVO();
            newUser.setUser_seq(5); // 새로운 user_seq 값을 설정
            newUser.setUser_id("newUser");
            newUser.setUser_pw("password");
            newUser.setUser_name("New User");
            newUser.setUser_gubun("G");
            int insertCount = session.insert("userNameSpace.insertUser", newUser);
            session.commit(); // 삽입 후 커밋
            System.out.println("삽입된 레코드 수: " + insertCount);
            
            // 삽입된거 확인
            userList = session.selectList("userNameSpace.selectUser");
            System.out.println("삽입 후 전체출력:");
            for (UserVO user : userList) {
                System.out.println(user.getUser_id() + " " + user.getUser_name() + " " + user.getUser_gubun() + " " + user.getRegdate());
            }
            System.out.println();
            
            // 수정 시도
            newUser.setUser_name("Updated User");
            newUser.setUser_gubun("U");
            int updateCount = session.update("userNameSpace.updateUser", newUser);
            session.commit(); // 수정 후 커밋
            System.out.println("수정된 레코드 수: " + updateCount);
            
            // 수정 확인
            userList = session.selectList("userNameSpace.selectUser");
            System.out.println("수정 후 전체출력:");
            for (UserVO user : userList) {
                System.out.println(user.getUser_id() + " " + user.getUser_name() + " " + user.getUser_gubun() + " " + user.getRegdate());
            }
            System.out.println();
            
            // 삭제 시도
            int deleteCount = session.delete("userNameSpace.deleteUser", newUser);
            session.commit(); // 삭제 후 커밋
            System.out.println("삭제된 레코드 수: " + deleteCount);
            
            // 삭제 확인
            userList = session.selectList("userNameSpace.selectUser");
            System.out.println("삭제 후 전체출력:");
            for (UserVO user : userList) {
                System.out.println(user.getUser_id() + " " + user.getUser_name() + " " + user.getUser_gubun() + " " + user.getRegdate());
            }
            System.out.println();
        
            session.close();
            
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

 

my batis call test

<?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="userNameSpace">
	//property = vo에 있는 변수명, column = db에 있는 컬럼명
    //보통 select로 읽어올때 알리어스를 이용해서 vo의 이름으로 맞추거나
    //vo를 db 컬럼명과 같게 할 수 있지만
    //대부분은 변수명의 카멜 케이스를 유지 하고 알리어스를 이용하는 전자의 방식을 많이 사용한다.
    
	<resultMap id="userResultMap" type="com.lec08.dao.UserVO">
		<id property="user_seq" column="user_seq" />
		<result property="user_id" column="user_id" />
		<result property="use_pw" column="use_pw" />
		<result property="user_name" column="user_name" />
		<result property="user_gubun" column="user_gubun" />
		<result property="regdate" column="regdate" />
	</resultMap>
	
		<!-- SelectOne -->
	<select id="selectUserOne" resultType="com.lec08.dao.UserVO">
		SELECT user_seq, user_id,
		user_pw, user_name, user_gubun, regdate
		FROM users3
		WHERE user_seq=#{user_seq}
	</select>

	<!-- Select -->
	<select id="selectUser" resultType="com.lec08.dao.UserVO">
		SELECT *
		FROM users3
	</select>

	<!-- Insert -->
	<insert id="insertUser" parameterType="com.lec08.dao.UserVO">
		insert into
		users3(user_seq, user_id, user_pw, user_name)
		VALUES (#{user_seq}, #{user_id}, #{user_pw}, #{user_name})
	</insert>

	<!-- Update -->
	<update id="updateUser" parameterType="com.lec08.dao.UserVO">
		update users3
		set user_id = #{user_id},
        user_pw = #{user_pw},
        user_name = #{user_name},
        user_gubun = #{user_gubun}
        where user_seq = #{user_seq}
	</update>

	<!-- Delete -->
	<update id="deleteUser" parameterType="com.lec08.dao.UserVO">
		delete from users3
		where user_seq = #{user_seq}
		
	</update>



</mapper>

user-map-lec08.xml

반응형

'KOSTA교육 > 수업' 카테고리의 다른 글

[51/100] 240626  (0) 2024.06.26
[50/100] 240625  (0) 2024.06.25
[48/100] 240621  (0) 2024.06.21
[47/100] 240620  (0) 2024.06.20
[46/100] 240619  (0) 2024.06.19