아무거나

데이터 저장시 insert key 반환(=마지막으로 저장된 키값 반환) 본문

Java & Kotlin/Mybatis

데이터 저장시 insert key 반환(=마지막으로 저장된 키값 반환)

전봉근 2018. 12. 27. 23:27
반응형

예를 들어 아래와 같은 Mapper Method와 User Entity가 존재한다고 가정하자.


[User.java]

@Getter
@Setter
public class User {
private int id;
private String password;
private String passwordConfirm;
private String loginId;
private String userName;
private int active;
private String accessToken;
}


[UserMapper.java]

@Transactional
int setUserInfo(@Param("param") User param);


setUserInfo를 id로 매핑되어있는 Mapper.xml 파일을 확인하면 아래와 같이 예시로 쿼리가 작성되어있다.

[UserMapper.xml]

<insert id="setUserInfo" parameterType="com.wmp.admin.member.entity.User" useGeneratedKeys="true" keyProperty="param.id">
INSERT INTO user
(
active, login_id, user_name, password
)
VALUES
(
#{param.active}, #{param.loginId}, #{param.userName}, #{param.password}
)
</insert>


그러면 위의 UserMapper.java의 setUserInfo 메소드의 주입된 대상인 User(=param) 즉, User의 key Property 값인 id에 반환된 키값을 set해준다.

아래와 같이 사용하면 된다.

( UserService.java에 User 정보를 저장하는 메소드가 있다고 가정하자 )


[UserService.java]

public void saveUser(User user) {
// 회원 정보 저장
user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
user.setActive(0);
userMapper.setUserInfo(user);

Role role = roleMapper.getRoleInfo("ADMIN");

UserRole userRole = new UserRole();
userRole.setRoleId(role.getId());
userRole.setUserId(user.getId()); // 반환된 키값

userRoleMapper.setUserRoleInfo(userRole);
}



반응형

'Java & Kotlin > Mybatis' 카테고리의 다른 글

반복되는 쿼리 묶기  (0) 2020.05.28
다중쿼리 사용  (0) 2020.05.13
db update change 값 리턴받아오는 방법  (0) 2018.12.27
Invalid bound statement (not found) 에러 문제  (0) 2018.12.05
Comments