Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JPA Insert
- springbatch
- react Page
- Javascript
- spring builder
- Spring JPA
- Spring Entity
- step 테이블
- react forwardRef
- springbatch chunk
- react jsx if
- react link
- javascript 함수
- SpringBatch 스키마
- spring
- javascrpit 기초
- javascript 기초
- JPA Update\
- Spring DTO
- Docker Windows 설치
- react
- 코드 중복제거
- react Quill
- 텍스트가 많은 경우
- spring security
- editor Quill
- Spring Controller return
- Spring CORS
- react react-router-dom v6
- react quill custom
Archives
- Today
- Total
천천히 알아보는 코딩공부
[Spring] JPA 특정 컬럼 Update 본문
Spring JPA Update 특정컬럼 변경 예제
Post 방식으로 구현하였다.
AdminNoticeDto (DTO)
@Getter
@NoArgsConstructor
public class AdminNoticeDto {
private long id;
@NotNull (message = "관리자 명을 입력해주세요")
private String serviceName;
@NotNull (message = "서비스 그룹을 입력해주세요")
private String serviceGroup;
@NotNull (message = "제목을 입력해주세요")
private String title;
@NotNull (message = "내용을 입력해주세요")
private String content;
private char useYn
private String writeId;
private String uptUsrid;
private Date uptDtm;
//Entity -> Dto
@Builder
public AdminNoticeDto(long id, String serviceName, String serviceGroup,
String title, String content, char useYn, String writeId, Date writeDate,
String uptUsrid, Date uptDtm)
{
this.id = id;
this.serviceName = serviceName;
this.serviceGroup = serviceGroup;
this.title = title;
this.content = content;
this.useYn = useYn;
this.writeId = writeId;
this.writeDate = writeDate;
this.uptUsrid = uptUSrid;
this.uptDtm = uptDtm;
}
// Dto -> Entity
public AdminNoticeEntity toEntity()
{
return AdminNoticeEntity.builder()
.id(id)
.serviceName(serviceName)
.serviceGroup(serviceGroup)
.title(title)
.content(content)
.useYn(useYn)
.writeId(writeId)
.writeDate(new Date()) // 현재 날짜
.uptUsrid(uptUsrid)
.uptDtm(new Date()) // 현재 날짜
.build();
}
// Entity -> Dto
public AdminNoticeDto(AdminNoticeEntity adminNoticeEntity)
{
this.id = adminNoticeEntity.getId();
this.serviceName = adminNoticeEntity.getServiceName();
this.serviceGroup = adminNoticeEntity.getServiceGroup();
this.title = adminNoticeEntity.getTitle();
this.content = adminNoticeEntity.getContent();
this.useYn = adminNoticeEntity.getUseYn();
this.writeId = adminNoticeEntity.getWritedId();
this.writeDate = adminNoticeEntity.getWriteDate();
this.uptUsrid = adminNoticeEntity.getUptUsrid();
this.uptDtm = adminNoticeEntity.getUptDtm();
}
}
AdminNoticeEntity (Entity)
@Entity
@NoArgsConstructor
@Getter
@Table(name="AdminNotice")
public class AdminNoticeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String serviceName;
private String serviceGroup;
private String title;
private String content;
private String writeId;
// JsonFormat - > Select 할때 Format 변경
@JsonFormat(shape = JsomFormat.Shape.STRING, pattern = "yyyy-MM-dd MM:mm:ss"
, timezone = "Asia/Seoul")
@Column(updatable = false) // 수정이 되지 않게
private Date writeDate;
private String uptUsrid;
@JsonFormat(shape = JsomFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss"
, timezone = "Asia/Seoul")
private Date uptDtm;
@Builder
public AdminNoticeEntity(long id, String serviceName, String serviceGroup, String title,
String content, String writeId, Date writeDate, String uptUsrid, Date uptDtm) {
this.id = id;
this.serviceName = serviceName;
this.serviceGroup = serviceGroup;
this.title = title;
this.content = content;
this.wruteId = writeId;
this.writeDate = writeDate;
this.uptUsrid = uptUSrid;
this.uptDtm = uptDtm;
}
}
Update 시 수정이 되지 않게 writeDate 컬럼을 @Column 설정 해줬습니다.
ResultMessage
@Data
public class ResultMessage<T> {
private StatusEnum status;
private String message;
private int count;
private T data;
public ResultMessage()
{
this.status = StatusEnum.BAD_REQUEST;
this.message = null;
this.count = 0;
this.data = null;
}
public ResultMessage(StatusEnum status, String message, int count, T data)
{
this.status = status;
this.message = message;
this.count = count;
this.data = data;
}
}
StatusEnum
public enum StatusEnum{
OK(200, "OK"),
BAD_REQUEST(400, "BAD_REQUEST"),
NOT_FOUNT(404, "NOT_FOUND"),
INTERNAL_SERVER_ERROR(500, "INTERNAL_SERVER_ERROR");
int statusCode;
String code;
StatusEnum(int statusCode, String code)
{
this.statusCode = statusCode;
this.code = code;
}
}
AdminNoticeController (Controller)
@RestController
@RequestMapping("/adminKisline/notice")
public class AdminNoticeController {
@Autowired
private AdminNoticeServiceImpl noticeService;
@CrossOrigin(origins = "*")
@PostMapping("/noticeDelete")
public ResponseEntity<ResultMessage> deleteSave
(@valid @RequestBody AdminNoticeDto adminNoticeDto, BindingResult bindingResult)
throws Exception
{
ResultMessage result = new ResultMessage();
String message = "";
long id = adminNoticeDto.getId();
int resultCount = noticeService.deleteAdminNotice(id);
if(resultCount > 0)
{
result.setStatus(StatusEnum.OK);
result.setCount(1);
message = "저장 성공했습니다.";
}
else
{
result.setStatus(StatusEnum.BAD_REQUEST);
result.SetCount(0);
message = "저장 실패했습니다.";
}
result.setMessage(message);
result.setData(id);
return ResponseEntity.ok().body(result);
}
}
AdminNoticeServiceimpl
@Service
public interface AdminNoticeServiceimpl{
public int deleteAdminNotice(long id) throws Esception;
}
AdminNoticeService
@Service
public class AdminNoticeService implements AdminNoticeServiceImpl{
@Autowired
private AdminNoticeRepository adminNotice;
public int deleteAdminNotice(long id) throws Esception {
return adminNotice.updateAdminNoticeUseYn(id);
}
}
AdminNoticeRepository
@Service
public class AdminNoticeRepository extends CrudRepository<AdminNoticeEntity, Long> {
@Transactional
@Modifying
@Query(update AdminNoticeEntity o set o.useYn = 'N', o.uptdtm = current_timestamp where o.id = :id")
int updateAdminNoticeUseYn(long id);
}
'Java > SpringBoot' 카테고리의 다른 글
[Spring Security] AuthenticationProvider, OncePerRequestFilter (0) | 2025.02.04 |
---|---|
[Spring] JPA + Security + jwt 방식 (1) 개념 설명 (0) | 2023.02.09 |
[Spring] JPA 전체 Insert, Update (0) | 2023.01.26 |
[Spring] Lombok 자주 사용하는 어노테이션 정리 (0) | 2022.12.02 |
[spring] DTO, Entity 차이 및 전달 로직 (0) | 2022.12.01 |
Comments