代码生成器所需要的依赖
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
<!-- 自动依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.0</version>
</dependency>
<!-- mp模板 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!-- slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version><!--$NO-MVN-MAN-VER$-->
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
代码生成类
package com.lcx;
import java.util.ArrayList;
import java.util.List;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class AutoCode {
public static void main(String[] args) {
String property = System.getProperty("user.dir");//获取当前用户目录
//全局配置
GlobalConfig gc = new GlobalConfig();
gc.setActiveRecord(true);//支持ar
gc.setOutputDir(property+"/src/main/java");//指定代码生成位置
gc.setFileOverride(true); //是否覆盖已有文件
gc.setBaseResultMap(true); //XML是否需要BaseResultMap
gc.setBaseColumnList(true); //XML是否显示字段
gc.setControllerName("%sController");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
gc.setAuthor("liuchenxin");
gc.setIdType(IdType.AUTO);
gc.setSwagger2(true);
//设置数据源
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("...");
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setDbType(DbType.MYSQL);//指定数据库类型
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
//strategyConfig.setTablePrefix("tab_"); //不生成表名前缀
strategyConfig.setInclude("user");//设置要生成的数据表对应的类
strategyConfig.setNaming(NamingStrategy.underline_to_camel);//表名转_
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);//字段转_
strategyConfig.setEntityLombokModel(true);//自动lombok
//逻辑删除
strategyConfig.setLogicDeleteFieldName("deleted");
//自动填充
TableFill fill = new TableFill("create_time",FieldFill.INSERT);
TableFill fill2 = new TableFill("update_time",FieldFill.INSERT_UPDATE);
List<TableFill> list = new ArrayList<>();
list.add(fill);
list.add(fill2);
strategyConfig.setTableFillList(list);
//乐观锁
strategyConfig.setVersionFieldName("version");
//生成包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.lcx");
pc.setEntity("bean");
pc.setController("controller");
pc.setService("service");
pc.setServiceImpl("serviceImpl");
pc.setMapper("mapper");
pc.setXml("mapper");
//创建代码生成器
AutoGenerator generator=new AutoGenerator();
//把以上配置加入到生成器里面
generator.setGlobalConfig(gc);//添加全局配置
generator.setDataSource(dataSourceConfig);//添加数据源配置
generator.setStrategy(strategyConfig);//添加策略配置
generator.setPackageInfo(pc);//添加包配置
//执行代码生成器
generator.execute();
}
}
配置类
package com.lcx.config;
import java.util.Date;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
@EnableTransactionManagement
@Configuration
public class MPconfig {
//配置自动填充组件
@Bean
public MetaObjectHandler handler(){
MetaObjectHandler metaObjectHandler = new MetaObjectHandler(){
@Override
public void insertFill(MetaObject metaObject) {
// TODO Auto-generated method stub
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
// TODO Auto-generated method stub
this.setFieldValByName("updateTime",new Date(),metaObject);
}
};
return metaObjectHandler;
}
//乐观锁插件
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor(){
return new OptimisticLockerInterceptor();
}
@Bean//配置分页插件
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
//3.3.0之后逻辑删除组件不用配置
}
主配置文件
spring.datasource.username=root
spring.datasource.password=94847361
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#开启mybatis-plus的日志功能
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#配置逻辑删除,被删为1,未删为0
mybatis-plus.global-config.db-config.logic-delete-field=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
1,代码自动生成之后,需要在mapper接口添加@mapper注解
2,调用crud方法时注入的是service层
3,在控制器里面如果类上有requestmapping注解,那么访问路径需要加上这个路径
4,如果不想使用MP生成的id,就在bean的id上写auto,如果不生效,一定记得把id类型改为integer,Long类型是不生效的
原文:https://www.cnblogs.com/lcxtm/p/13586428.html