Mybatis plus 의 자동 충전 과 낙관적 자물쇠 의 실례 상세 설명(springboot)
항목 에서 자주 데 이 터 를 만 날 수 있 습 니 다.매번 같은 방식 으로 채 웁 니 다.예 를 들 어 삽입 시간,업데이트 시간 등 입 니 다.Mybatis-plus 의 자동 충전 기능 은 우리 가 신속하게 실현 하 는 데 도움 을 줄 수 있다.
1.표 에 create 추가time,update_시간 필드
2.실체 클래스 주석 채 우기 필드
@TableField(fill= FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
/***기본적으로 처리 하지 않 음
/
DEFAULT,
/*
*채 움 필드 삽입
/
INSERT,
/*
*채 움 필드 업데이트
/
UPDATE,
/*
*채 움 필드 삽입 및 업데이트
*/
INSERT_UPDATE
3.사용자 정의 구현 클래스
MyMetaObjectHandler
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
*
* Mybatis-plus insert
*/
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
/**
*
* Mybatis-plus update
*/
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
setFieldValByName 에는 세 개의 인자 가 있 습 니 다.첫 번 째 는 필드 이름 이 고 두 번 째 는 채 울 데이터 입 니 다.세 번 째 인 자 는 metaObject 로 쓰 면 됩 니 다.테스트 삽입:
테스트 수정:
데 이 터 를 삽입 할 때 이 두 데 이 터 를 현재 시간 에 자동 으로 채 우 고 업데이트 할 때 업데이트 시간 만 현재 시간 으로 변경 합 니 다.
낙관적 자물쇠
프로젝트 에 동시 다발 작업 이 발생 하면 업데이트 문 제 를 잃 어 버 릴 수 있 습 니 다.즉,A 와 B 는 모두 Money 필드 가 100 이 고 A 는 Money+900 을 수정 하여 1000 으로 바 꿉 니 다.이때 B 도 수정 사항 을 제출 하고 Money+50 을 150 으로 바 꿉 니 다.A 의 수정 을 잃어버렸어 요.
이런 상황 을 해결 하 는 데 는 두 가지 방법 이 있다.비관 적 인 자물쇠 와 낙관적 인 자물쇠,비관 적 인 자 물 쇠 는 한 가지 조작 만 할 수 있 고 A 가 조작 할 때 B 는 기다 릴 수 밖 에 없다.A 가 제출 하고 B 가 완성 되 어야 조회 할 수 있다.
Mybatis-plus 자체 낙관 잠 금:version 필드 를 만 듭 니 다.A 와 B 가 동시에 작업 할 수 있 습 니 다.A 가 제출 할 때 현재 버 전 번호 와 조회 할 때의 버 전 번호 가 일치 하 는 지 확인 하고 일치 해 야 제출 할 수 있 습 니 다.그렇지 않 으 면 제출 에 실패 하고 제출 성공 하면 현재 버 전 번 호 를+1 합 니 다.
1.데이터베이스 에 version 필드 를 추가 하고 실체 클래스 에 version 속성 을 추가 합 니 다.
주해
@Version
private Integer version;
2.설정 클래스 를 작성 하여 낙관적 인 잠 금 플러그 인 을 도입 합 니 다.
@Configuration
@MapperScan("com.zyw.mpdemo.mapper")
public class MpConfig {
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}
3.테스트 작성두 대상 으로 같은 id 를 조회 하고 서로 다른 수정 을 한 다음 순서대로 제출 합 니 다.
@Override
public void test(Account account) {
Account account1 = accountMapper.selectById(1326188266440888321L);
Account account2 = accountMapper.selectById(1326188266440888321L);
account1.setMoney(account.getMoney());
account2.setMoney(account.getMoney()+100);
accountMapper.updateById(account1);
accountMapper.updateById(account2);
}
첫 번 째 성공,두 번 째 제출 이 실 패 했 습 니 다.두 번 째 제출 시의 버 전 번호 가 조회 한 것 과 일치 하지 않 기 때 문 입 니 다.
Mybatis plus 의 자동 충전 과 낙관 잠 금(springboot)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Mybatis plus 자동 충전 낙관 잠 금 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SpringMVC와 Mybatis 집합은 호출 저장 프로세스, 사무 제어 실례를 실현한다SSM 프레임워크에서 호출 데이터베이스의 저장 프로세스와 사무 제어에 자주 사용되는데 다음은 증빙서류를 저장하는 예를 들어 소개한다. 1. Oracle에 저장된 프로세스 코드는 다음과 같습니다(주요 논리는 증빙 서류...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.