mybatisPlus
1.修改pom增加依赖
<dependencies>
<!-- 数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- mybatis_plus 是自己开发的不是官方的
不要同时导入 mybatis 和 mybatis-plus
-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
2增加配置类MybatisPlusConfig
@Configuration
@EnableTransactionManagement
//开启事物
//扫描mapper文件夹
@MapperScan("com.lyk.mapper")
public class MybatisPlusConfig {
// 注册乐观锁插件
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor(){
return new OptimisticLockerInterceptor();
}
//分页插件
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
// 逻辑删除组件
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
// 性能分析插件
@Bean
@Profile({"dev","test"}) // 设置开发环境
public PerformanceInterceptor performanceInterceptor(){
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
performanceInterceptor.setMaxTime(100); //设置sql最大时间
performanceInterceptor.setFormat(true); // sql格式化
return performanceInterceptor ;
}
}
3完善自动填充功能MyMetaObjectHandler
@Slf4j
@Component //自动填充
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill.....");
//String fieldName, Object fieldVal, MetaObject metaObject
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("modifiedTime",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill.....");
this.setFieldValByName("modifiedTime",new Date(),metaObject);
}
}
4.配置文件
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&allowPublicKeyRetrieval=true
### mysql 8 的驱动 com.mysql.cj.jdbc.Driver 兼容 5
# mysql 5 驱动 com.mysql.jdbc.Driver
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
###设置开发环境 dev
spring.profiles.active=dev
5.实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
//雪花算法 对应生成数据库中的主键
@TableId(type = IdType.AUTO) // 默认全局唯一Id
private Long id; //数据库字段要加 auto
private String name;
private Integer age;
private String email;
// 字段添加内容
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date modifiedTime;
@Version //乐观锁
private Integer version;
@TableLogic // 逻辑删除
private Integer deleted;
}
5.mapper
// 在对应的Mapper 上继承基本的类 BaseMapper
@Repository
public interface UserMapper extends BaseMapper<User> { //特别注意: 必须要在启动类上增加MapperScan() 扫描Mapper接口
//所有CRUD操作编写完成
//不需要在写
}
6.代码生成器
public static void main(String[] args){
//需要构件一个代码自动生成器
AutoGenerator mpg = new AutoGenerator();
//配置策略
//1. 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath+"/src+main/java");
gc.setAuthor("kangkang");
gc.setOpen(false); //是否打开
gc.setFileOverride(false); // 是否覆盖
gc.setServiceName("%sService"); //去掉服务名字 不需要service的前缀i
gc.setIdType(IdType.ID_WORKER);
gc.setDateType(DateType.ONLY_DATE); //日子类型
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);
//2.设置数据源
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&allowPublicKeyRetrieval=true");
dsc.setUsername("root");
dsc.setPassword("admin");
dsc.setDbType(DbType.MYSQL);
//3设置包的配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("blog");
pc.setParent("com.lyk");
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setController("controller");
pc.setService("service");
mpg.setPackageInfo(pc) ;
//4. 策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setInclude("user");// 设置映射的表名字
strategyConfig.setNaming(NamingStrategy.underline_to_camel); //下划线转驼峰命名
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
//自动生成lombok
strategyConfig.setEntityLombokModel(true);
//逻辑删除
strategyConfig.setLogicDeleteFieldName("deleted");
// 自动填充配置
TableFill gmtCreate = new TableFill("gmt_create" , FieldFill.INSERT);
TableFill gmtModified= new TableFill("gmt_modified" , FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(gmtCreate);
tableFills.add(gmtModified);
strategyConfig.setTableFillList(tableFills);
//乐观锁
strategyConfig.setVersionFieldName("version");
//设置驼峰
strategyConfig.setRestControllerStyle(true); //restful 风格
strategyConfig.setControllerMappingHyphenStyle(true); // localhost:8080/hello_id_2
mpg.setStrategy(strategyConfig);
//执行
mpg.execute();
}
有任何问题得可以联系我哦~