Mybatis-plus 정책 을 사용 하여 데이터베이스 자동 업데이트 시간 실패 문제 해결

머리말
my batis 프로젝트 에서 우 리 는 보통 플러그 인 플러스 를 사용 하여 기본 조회 기능 을 확장 합 니 다.다른 한편,알 리 바 바 개발 매 뉴 얼 의 규범 에서 도 데이터베이스 시트 를 만 들 때 보통 create 가 있다 고 언급 했다.time 과 updatetime 필드,그들의 건축 표 문 구 는 다음 과 같 습 니 다.

'create_time' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
'update_time' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
창작 자 는 insert 를 할 때 자동 으로 create 가 생 성 되 기 를 바 랍 니 다.time,동시에 다른 줄 에서 수정 한 후 update 작업 을 실행 하면 자동 으로 update 가 업 데 이 트 됩 니 다.time 필드.
블 로 거 는 개발 과정 에서 먼저 my batis plus 의 selectOne 을 사용 하여 특정한 대상 XXX 를 조회 하고 그 특정한 값 을 수정 한 다음 에 데이터 베 이 스 를 이용 한 자동 시간 업데이트 전략,즉 ON UPDATE CURRENTTIMESTAMP 는 시간 을 자동 으로 수정 합 니 다.그래서 xxxService.updateById(XXX)를 사용 합 니 다.
그러나 이런 업데이트 방법 은 자동 으로 시간 을 업데이트 하지 않 는 다.selectOne 이 나 온 대상 은 명확 한 시간 이 있 기 때문에 update 할 때 이 원래 시간 을 주입 합 니 다.
해결 방법
방법 1:
데이터베이스 필드 정책 을 직접 작성 하여 updateFill()을 진행 합 니 다.참고 할 수 있 습 니 다:https://www.jb51.net/article/197456.htm
이런 방법의 확정 은 블 로 거들 도"이런 방식 은 Mybatis-plus 로 봉 인 된 방법 을 사용 할 때 만 유효 하 며,자신 이 정의 한 서 비 스 를 사용 하면 효력 이 발생 하지 않 는 다.이것 은 구덩이"라 고 말 했다.또한,나 는 이러한 방법 이 모든 표 의 updateTime 을 수정 할 때 바 꿔 야 한다 고 생각한다.일부 경우 개별 필드 를 수정 할 때 변경 할 필요 가 없 을 수도 있다.이렇게 칼국수 처럼 한 칼 에 주입 하 는 것 은 유연성 이 부족 하 다.
방법 2:
원본 update sql 을 직접 작성 하고 수정 할 필드 만 수정 하 며 updateTime 필드 는 변경 하지 않 습 니 다.이렇게 저장 할 때 자동 으로 시간 이 업 데 이 트 됩 니 다.
방법 3:
plus 가 제공 하 는 주 해 를 이용 하여 대응 하 는 entity 필드 주석@TableField 에 update="now()"를 추가 합 니 다.그 중에서 update="now()"는 데이터 베 이 스 를 사용 하 는 시간 을 표시 하고 SQL 을 출력 합 니 다.update 표 set 필드=now()where...이 동시에 필드 update set 부분 을 입력 합 니 다.이 주 해 는 el 주해 보다 좋 습 니 다.

그림 1.주해 쓰기 설명도
메모:이 방법 은 updateById 를 실행 할 때 유효 합 니 다.updateAllColumnById 를 실행 할 때 유효 하지 않 습 니 다.updateAllColumnById 는 시간 을 설정 해 야 합 니 다.
총결산
우 리 는 실 체 를 생 성 할 때 이 표 의 update 를 명확 하 게 알 고 있다.time 필드 는 자동 으로 업데이트 되 는 것 입 니 다.방법 2 에서 말 한 plus 아래 TableField 주석 으로 업데이트 합 니 다.업데이트 AllColumnById 의 상황 을 주의 하 시 면 됩 니 다.
방법 에 대해 서 는 insert Fill 과 updateFill 을 사용 하면 모든 상황 에서 절단면 에 적합 합 니 다.초기 에 명확 하지 않 으 면 중후 반 에 갑자기 증가 하려 면 이전 표 에 사용 되 지 않 은 필드 를 확보 해 야 합 니 다.그렇지 않 으 면 충돌 할 때 가 있 습 니 다.기록 할 때 직렬 로 바 뀌 어 데이터 오류 출처 를 조회 하기 어렵 습 니 다.
Mybatis-plus 정책 을 사용 하여 데이터 베 이 스 를 자동 으로 업데이트 하 는 데 실패 한 문제 해결 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Mybatis-plus 자동 으로 데이터 베 이 스 를 업데이트 하 는 시간 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기