Programming/Spring

Spring(10) - Mybatis 실습 3 : 조회

코딩하는 포메라니안 2022. 5. 7. 14:06

1. mapper에 SQL 코드 작성

 

1. 값 하나 받아오기

태그 내에 if, include, where태그 등이 올 수 있다.

<select id="getOne" parameterType="map" resultType="userDto">
    select * from user
    where userid = #{userId} 
    <if test="userPwd != null">
        and userpwd = #{userPwd}
    </if>
</select>

 

 

2. 리스트로 받아오기

List<UserDto>라는 객체가 없기 때문에, 구조를 만들어 사용해야 한다.

UserDto타입의 list의 이름은 userList로 했고, type.setProperty값(column값)으로 객체가 만들어진다.

 

그러면 select해오는 곳에서는 이 resultMap을 사용해서 데이터들을 차곡차곡 쌓아 Dao로 반환해준다.

<resultMap type="userDto" id="userList">
    <result column="username" property="userName"/>
    <result column="userid" property="userId"/>
    <result column="userpwd" property="userPwd"/>
    <result column="email" property="email"/>
</resultMap>

<select id="getAll" resultMap="userList">
    select * from user;
</select>

 

 

 

2. DAO에서 호출하기

 

조회할 때는 DB에 변경이 없으므로 commit은 안 한다.

@Override
public UserDto login(Map<String, String> map) throws SQLException {
    SqlSession sqlSession = SqlMapConfig.getSqlSession();
    return sqlSession.selectOne(NAMESPACE+"getOne", map);
}

@Override
public List<UserDto> listUser() throws Exception {
    SqlSession sqlSession = SqlMapConfig.getSqlSession();
    return sqlSession.selectList(NAMESPACE+"getAll");
}

@Override
public UserDto getUser(String userId) throws Exception {
    SqlSession sqlSession = SqlMapConfig.getSqlSession();
    Map<String, String> map = new HashMap<>();
    map.put("userId", userId);
    return sqlSession.selectOne(NAMESPACE+"getOne", map);
}