mybatis vo 예제

MyBatis는 Java 오픈 소스 ORM(Object-Relational Mapping) 프레임워크입니다. VO(Value Object) 또는 DTO(Data Transfer Object)는 MyBatis에서 사용되는 데이터 객체입니다. 이 객체들은 데이터베이스의 테이블과 일치하는 속성을 가지며, MyBatis에서는 데이터베이스와 자바 객체 간의 매핑을 위해 이러한 VO를 사용합니다.

VO 예제를 통해 MyBatis에서 어떻게 사용되는지 알아보겠습니다.

VO 클래스 생성

먼저, VO 클래스를 생성해야 합니다. VO 클래스는 데이터베이스의 테이블과 일치하는 속성을 가지며, getter와 setter를 포함해야 합니다.

public class UserVO {
    private int id;
    private String name;
    private String email;
    
    // getter, setter 생략
    
    @Override
    public String toString() {
        return "UserVO [id=" + id + ", name=" + name + ", email=" + email + "]";
    }
}

위의 예제에서 UserVO 클래스는 “users”라는 테이블과 일치하는 속성을 가지고 있습니다. id, name, email은 데이터베이스 테이블의 컬럼과 일치하는 속성입니다.

MyBatis Mapper 파일 작성

다음으로, MyBatis Mapper 파일을 작성해야 합니다. Mapper 파일은 SQL 쿼리와 자바 메서드를 매핑하는 역할을 합니다.

<!-- UserMapper.xml -->
<?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="com.example.UserMapper">
  
    <resultMap id="userResultMap" type="com.example.UserVO">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="email" column="email"/>
    </resultMap>
  
    <select id="getUserById" resultMap="userResultMap">
        SELECT * FROM users WHERE id = #{id}
    </select>
  
    <insert id="insertUser" parameterType="com.example.UserVO">
        INSERT INTO users(id, name, email)
        VALUES (#{id}, #{name}, #{email})
    </insert>
  
</mapper>

위의 예제에서는 com.example.UserVO 클래스를 userResultMap으로 매핑하고, getUserById라는 메서드를 통해 특정 ID의 사용자를 가져오는 SELECT 쿼리를 작성했습니다.

MyBatis와 VO 사용하기

이제 MyBatis 설정 파일에서 Mapper 파일을 등록하고, VO를 사용하여 데이터베이스와 상호 작용할 수 있습니다.

<!-- mybatis-config.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
                             "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_example"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
  
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
  
</configuration>

위의 예제에서는 MySQL 데이터베이스를 사용하고 있으며, com.mysql.jdbc.Driver 드라이버를 로드하고 jdbc:mysql://localhost:3306/mybatis_example URL로 접속합니다. 또한, UserMapper.xml 파일을 등록하여 사용합니다.

이제 자바 코드를 사용하여 VO와 MyBatis를 이용해 데이터베이스와 상호 작용할 수 있습니다.

public class Main {
    public static void main(String[] args) {
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Main.class.getResourceAsStream("mybatis-config.xml"));
        try(SqlSession session = sqlSessionFactory.openSession()) {
            UserVO user = session.selectOne("com.example.UserMapper.getUserById", 1);
            System.out.println(user);
        }
    }
}

위의 예제에서는 SqlSessionFactory를 빌드하고, SqlSession을 열어서 com.example.UserMapper.getUserById 메서드를 사용하여 ID가 1인 사용자를 가져옵니다. 결과를 출력합니다.

이렇게 MyBatis와 VO를 함께 사용하여 데이터베이스와 상호 작용할 수 있습니다.

#MyBatis #VO