[MyBatis] 등록자/수정자 ID 를 세팅할 때는 bind 를 사용합시다.

식빵·2023년 4월 19일
0

Mybatis

목록 보기
7/9
post-thumbnail

Spring Security 를 쓴다는 가정하에서 글을 작성합니다.


먼저 java 로 static 한 메소드 하나를 생성합니다.

package my.mybatis.util

import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;

public class MyBatisLoginUserInfo {
	
    public static String getId() {
        Object principal 
        	= SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        
        UserDetails userDetails = (UserDetails) principal;

        return userDetails.getUsername();
    }
}

이후에 <bind> 태그에서 해당 메소드를 호출 및 바인딩해주면 됩니다.

<update id="update" parameterType="my.dto.TestDTO">
  <bind name="updusrId" value='@my.mybatis.util.MyBatisLoginUserInfo@getId()'/>
  update gnp_pts.data_map
  set
  name = #{name}
  , updusr_id = #{updusrId} -- 여기서 사용하게 됩니다!
  , updt_dt = now()
  where id = #{id}
</update>
  • value 속성에서 메소드 호출하고...
  • name 속성은 메소드 호출 반환값을 바인딩할 파라미터 명을 지정합니다.
  • 해당 name 속성으로 지정한 파라미터 명을 #{} 에서 사용하면 끝입니다!

참고: <bind> 태그의 name 속성과 똑같은 명칭의 필드가 TestDTO
있든 없든 상관없이 동작합니다 😎

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글