可以省略很多基本的增删改查
先导包
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1.tmp</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope><version>8.0.13</version></dependency>
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://127.0.0.1:3307/siterec_datacenter?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
然后写一个mapper
package com.dx.dx_iteminfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dx.dx_iteminfo.entity.Student;
import org.springframework.stereotype.Repository;
@Repository
public interface StuMapper extends BaseMapper<Student> {
}
自然要有student实体类
package com.dx.dx_iteminfo.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ToString
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "student")//指定表名默认和类名一致,可以自动配置
public class Student implements Serializable {
// @TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@Version // 乐观锁version注解
private Integer version;
private String extra;
// @TableField里面可以指定对应表中的字段,
//默认会将驼峰转成下划线,还有其他属性可以设置,比如该字段不希望存入表中,
//可以@TableField(exist = false)
}
启动类里面需要扫描一下
package com.dx.dx_iteminfo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.dx.dx_iteminfo.mapper")
@SpringBootApplication
public class DxIteminfoApplication {
public static void main(String[] args) {
SpringApplication.run(DxIteminfoApplication.class, args);
}
}
自动生成创建修改时间需要设置一个拦截
package com.dx.dx_iteminfo.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import sun.misc.Contended;
import java.util.Date;
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
// 插入时的填充策略
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill");
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("lastUpdateTime", new Date(), metaObject);
}
// 更新时的填充策略
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill.....");
this.setFieldValByName("lastUpdateTime", new Date(), metaObject);
}
}
还有一个乐观锁的
package com.dx.dx_iteminfo.config;
import com.baomidou.mybatisplus.core.parser.ISqlParser;
import com.baomidou.mybatisplus.extension.parsers.DynamicTableNameParser;
import com.baomidou.mybatisplus.extension.parsers.ITableNameHandler;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.apache.ibatis.reflection.MetaObject;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@MapperScan("com.dx.dx_iteminfo.mapper")
@EnableTransactionManagement
@Configuration // 配置类
public class MyBatisPlusConfig {
// 注册乐观锁插件
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor(){
return new OptimisticLockerInterceptor();
}
}
