ActiveRecord 模式
支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
yml
# 项目指定一个名称
spring:
application:
name: mp-springboot-advance
datasource:
url: jdbc:mysql://127.0.0.1:3306/db_mp?characterEncoding=utf8&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver # mysql 高版本驱动,springboot建议使用高本版
username: root
password: root
# 指定项目启动端口号
server:
port: 8080
# 配置MP
# 日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开发测试开启,看到SQL语句,事务
#配置数据库表的前缀
global-config:
db-config:
table-prefix: tb_
实体类
public class Goods extends Model<Goods> {
@TableId(value = "id",type = IdType.AUTO) // 声明当前属性是主键属性
private Long id;
@TableField(value = "name")
private String name;
private Double price;
@TableField(value = "stock")
private Integer num;
}
自动填充
配置类
@Component
public class MyFillMetaObjectHandler implements MetaObjectHandler {
// 指定插入的时候进行赋值代码
@Override
public void insertFill(MetaObject metaObject) {
System.out.println("自动填充 insert.......start");
this.fillStrategy(metaObject,"createTime",new Date());
this.fillStrategy(metaObject,"updateTime",new Date());
System.out.println("自动填充 insert.......end");
}
// 指定你在更新的时候赋值代码
@Override
public void updateFill(MetaObject metaObject) {
System.out.println("自动填充 update.......start");
this.fillStrategy(metaObject,"updateTime",new Date());
System.out.println("自动填充 update.......end");
}
}
实体类
// fill 属性表达意思是: 什么时候对这个字段自动填充 :插入对这个字段进行自动填充
@TableField(/*select = false*/ fill = FieldFill.INSERT)
private Date createTime;
// fill 属性表达意思是: 什么时候对这个字段自动填充 :更新和插入的时候对这个字段进行自动填充
@TableField(/*select = false*/ fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
配置分页插件
@Configuration
public class MybatisPlusConfig {
// 开启分页插件 (直接去手册粘贴)
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
// 添加分页插件
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 添加乐观锁插件
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return mybatisPlusInterceptor;
}
}
乐观锁插件
@Configuration
public class MybatisPlusConfig {
// 开启分页插件 (直接去手册粘贴)
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
// 添加分页插件
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 添加乐观锁插件
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return mybatisPlusInterceptor;
}
}