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
에
있든 없든 상관없이 동작합니다 😎