1.导入依赖
<!-- mp依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!-- 会用到配置类 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- 实体类辅助包 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2.实体类,有了lombok,完全不用写构造方法,get和set方法。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserInfo {
@TableId(type = IdType.ID_WORKER_STR)
private String id;
private String userName;
private Integer userAge;
private String userEmail;
// 开启乐观锁
@Version
// 开启自动填充
@TableField(fill = FieldFill.INSERT)
private Integer userVersion;
}
3.自动填充类,自动填充用于某些字段自动填写一个准备好的默认值,比如时间的填写
@Component
public class MyMetaObjecthandler implements MetaObjectHandler{
@Override
public void insertFill(MetaObject metaObject) {
// 这里是新建时自动填充
// 第一个参数userVersion是属性名,第二个参数是默认值,第三个参数为固定值。
this.setFieldValByName("userVersion", 1, metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
// 这里是更新时自动填充
}
}
4.Mapper接口,超级省事儿,xml不用写,也不需要使用逆向工程,只需要继承此类就可以使用自带的CRUD方法。
@Mapper
public interface UserMapper extends BaseMapper<UserInfo>{
}
5.配置开启乐观锁。
@Configuration
@Component
public class MyConfig {
// 将乐观锁加入到容器中,乐观锁生效
@Bean
public OptimisticLockerInterceptor OptimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}