1. 기존 parameterType="String" 파라미터 한개로 처리
UserInfoMapper.java
public interface UserInfoMapper { public UserInfo getUserInfo(String userId); }
UserInfoMapper.xml
<select id="getUserInfo" parametertype="String" resultmap="UserInfoResultMap"> SELECT id, user_id, state FROM UserInfo WHERE user_id = #{userId} </select>
UserInfoService.java
String userId = "user_id_value"; userInfo = userInfoMapper.getUserInfo(userId);
※ 단일 parameterType 로 String userId값 넣음
2. parameterType HashMap을 이용해서 여러개 넣기
UserInfoMapper.java
public interface UserInfoMapper { public UserInfo getUserInfo(HashMap<String, Object> map); }
UserInfoMapper.xml
<select id="getUserInfo" parametertype="hashmap" resultmap="UserInfoResultMap"> SELECT id, user_id, state FROM UserInfo WHERE user_id = #{userId} AND state = #{state} </select>
UserInfoService.java
HashMap<String, Object> map = new HashMap<String, Object>(); map.put("userId", "user_id_value"); map.put("state", "state_value"); userInfo = userInfoMapper.getUserInfo(map);
3. 2번과 비슷하지만 기존 userInfo 도메인 이용
UserInfoMapper.java
public interface UserInfoMapper { public UserInfo getUserInfo(HashMap<String, Object> map); }
UserInfoMapper.xml
<select id="getUserInfo" parametertype="hashmap" resultmap="UserInfoResultMap"> SELECT id, user_id, state FROM UserInfo WHERE user_id = #{user.userId} AND state = #{user.state} </select>
UserInfoService.java
UserInfo userInfo = new UserInfo(); userInfo.setUserId("user_id_value"); userInfo.setState("state_value"); HashMap<String, Object> map = new HashMap<String, Object>(); map.put("user", userInfo); userInfo = userInfoMapper.getUserInfo(map);
4. Param 이용
public interface UserInfoMapper { public UserInfo getUserInfo(@Param("userId") String userId, @Param("state") int state); }UserInfoMapper.xml
<select id="getUserInfo" resultmap="UserInfoResultMap"> SELECT id, user_id, state FROM UserInfo WHERE user_id = #{userId} AND state = #{state} </select>UserInfoService.java
String userid ="user_id_value"; int state = 0; userInfo = userInfoMapper.getUserInfo(String userid,int state);