[java] MyBatis에서 로그인 처리하기

이번에는 MyBatis를 사용하여 로그인 처리를 해보려고 합니다. MyBatis는 데이터베이스와의 상호작용을 쉽게 할 수 있는 프레임워크입니다. 로그인 처리는 대부분 데이터베이스와의 작업을 필요로하기 때문에 MyBatis를 사용하여 간편하게 구현할 수 있습니다.

1. MyBatis 설정하기

먼저, MyBatis를 프로젝트에 추가해야 합니다. 프로젝트의 build.gradle 파일에 다음 의존성을 추가해주세요.

dependencies {
    implementation 'org.mybatis:mybatis:3.5.6'
    implementation 'org.mybatis:mybatis-spring:2.0.6'
    implementation 'org.mybatis:mybatis-spring-boot-starter:2.2.0'
    //...
}

2. 데이터베이스 설정하기

MyBatis에서는 데이터베이스와의 연결을 위해 데이터베이스 설정 파일이 필요합니다. 예를 들어, MySQL을 사용한다면 다음과 같이 설정 파일을 작성해야 합니다.

<!-- database-config.xml -->
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="username"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <!-- mapper 설정 -->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

3. 로그인 기능 구현하기

로그인 기능을 구현하기 위해서는 사용자 정보를 저장하는 데이터베이스 테이블과 사용자 정보를 조회하는 MyBatis 매퍼 파일이 필요합니다.

3.1. User 테이블 생성하기

CREATE TABLE User (
  id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL,
  password VARCHAR(50) NOT NULL
);

3.2. User 모델 클래스 정의하기

public class User {
    private int id;
    private String username;
    private String password;
    
    // getter, setter, toString 생략...
}

3.3. UserMapper 인터페이스 작성하기

public interface UserMapper {

    User getUserByUsername(String username);
  
}

3.4. UserMapper.xml 작성하기

<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">

    <select id="getUserByUsername" resultType="com.example.model.User">
        SELECT * FROM User
        WHERE username = #{username}
    </select>

</mapper>

3.5. 로그인 로직 구현하기

아래 코드는 로그인 요청을 처리하는 메서드의 예시입니다.

public boolean login(String username, String password) {
    try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.getUserByUsername(username);
        if (user != null && user.getPassword().equals(password)) {
            // 로그인 성공
            return true;
        }
    }
    // 로그인 실패
    return false;
}

위 코드에서는 SqlSession을 이용하여 MyBatis를 초기화하고, UserMapper에서 getUserByUsername 메서드를 이용해 DB에서 사용자 정보를 조회합니다. 조회한 사용자 정보와 입력한 패스워드를 비교하여 로그인 성공 여부를 결정합니다.

결론

이제 MyBatis를 사용하여 로그인 처리를 간단하게 구현하는 방법에 대해 알아보았습니다. MyBatis는 데이터베이스와의 상호작용을 쉽게 할 수 있게 해주는 강력한 도구입니다. 로그인 처리 외에도 다양한 데이터베이스 작업을 MyBatis를 통해 편리하게 처리할 수 있습니다.