반응형

전자정부프레임워크에서 데이터베이스 연동을 위한 MyBatis를 활용하는 방법을 배우겠습니다. MyBatis는 SQL을 직접 작성하면서도 매핑을 통해 객체 지향 프로그래밍의 장점을 유지할 수 있는 데이터 매핑 프레임워크입니다.


1. MyBatis란?

MyBatis는 기존의 JDBC 코드를 대체하면서 SQL과 Java 객체 간의 매핑을 쉽게 처리할 수 있도록 도와줍니다. 주요 특징은 다음과 같습니다:

  1. SQL 중심의 데이터 접근 방식 지원
  2. XML 기반의 SQL 쿼리 관리
  3. 동적 SQL을 통한 유연성 제공

전자정부프레임워크에서는 MyBatis를 기본적으로 지원하여 간단하게 데이터베이스 연동 작업을 할 수 있습니다.


2. MyBatis 설정

2-1. MyBatis 설정 파일 작성

MyBatis 설정 파일은 XML 형태로 작성되며, 데이터베이스 연결 정보 및 매퍼 파일의 경로를 정의합니다.

src/main/resources/egovframework/sql-map-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>
    <settings>
        <setting name="cacheEnabled" value="true" />
        <setting name="lazyLoadingEnabled" value="true" />
    </settings>

    <typeAliases>
        <typeAlias alias="user" type="egovframework.example.sample.service.UserVO" />
    </typeAliases>

    <mappers>
        <mapper resource="egovframework/example/sample/service/impl/UserMapper.xml" />
    </mappers>
</configuration>

2-2. 데이터베이스 연결 설정

전자정부프레임워크는 Spring과 MyBatis를 통합하여 사용하므로, application-config.xml에 데이터 소스와 MyBatis 연동을 설정합니다.

src/main/resources/egovframework/spring/context-datasource.xml:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
    <property name="username" value="root" />
    <property name="password" value="password" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:/egovframework/sql-map-config.xml" />
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="egovframework.example.sample.service.impl" />
</bean>

3. MyBatis 매퍼 파일 작성

3-1. 매퍼 파일 생성

매퍼 파일은 SQL 쿼리를 정의하는 곳입니다.

src/main/resources/egovframework/example/sample/service/impl/UserMapper.xml:


http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        SELECT USER_ID, USER_NAME, PASSWORD, ROLE
        FROM USERS
        WHERE USER_ID = #{userId}
    


4. MyBatis DAO와 Service 구현

4-1. DAO 작성

UserDAO.java:

@Repository("userDAO")
public class UserDAO {
    @Autowired
    private SqlSession sqlSession;

    public UserVO selectUser(String userId) throws Exception {
        return sqlSession.selectOne("egovframework.example.sample.service.impl.UserMapper.selectUser", userId);
    }
}

4-2. Service 작성

UserService.java:

public interface UserService {
    UserVO getUserById(String userId) throws Exception;
}

UserServiceImpl.java:

@Service("userService")
public class UserServiceImpl implements UserService {
    @Resource(name = "userDAO")
    private UserDAO userDAO;

    @Override
    public UserVO getUserById(String userId) throws Exception {
        return userDAO.selectUser(userId);
    }
}

5. 테스트 및 실행

5-1. 테스트 Controller 작성

UserController.java:

@Controller
public class UserController {
    @Resource(name = "userService")
    private UserService userService;

    @RequestMapping("/user.do")
    public String getUser(@RequestParam("id") String userId, Model model) throws Exception {
        UserVO user = userService.getUserById(userId);
        model.addAttribute("user", user);
        return "user/userDetail";
    }
}

5-2. JSP 작성

/webapp/WEB-INF/views/user/userDetail.jsp:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

User Details

User ID: ${user.userId}

User Name: ${user.userName}

Role: ${user.role}


6. 마무리

MyBatis를 통해 SQL을 직접 제어하면서도 객체 매핑의 이점을 누릴 수 있습니다. 다음에서는 전자정부프레임워크의 트랜잭션 처리를 다룰 예정입니다.

 

반응형

+ Recent posts