代码生成器
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 能够疾速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的晋升了开发效率。
环境筹备
创立一个employee表
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS employee;
CREATE TABLE employee (
id bigint(20) NOT NULL COMMENT 'ID',
name varchar(255) DEFAULT NULL COMMENT '用户名',
gender varchar(255) DEFAULT NULL COMMENT '性别',
version int(10) DEFAULT '1' COMMENT '乐观锁',
deleted int(1) DEFAULT '0' COMMENT '逻辑删除',
create_time timestamp NULL DEFAULT NULL COMMENT '创立工夫',
update_time timestamp NULL DEFAULT NULL COMMENT '更新工夫',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

复制代码

创立一个SpringBoot我的项目。配置Swagger,数据库驱动,MyBatisPlus,Web,lombok依赖。
代码生成器须要增加一下依赖

残缺的pom.xml依赖代码
<dependencies>

    <dependency>        <!--swagger2-->        <groupId>io.springfox</groupId>        <artifactId>springfox-swagger2</artifactId>        <version>2.9.2</version>        <exclusions>            <exclusion>                <groupId>io.swagger</groupId>                <artifactId>swagger-annotations</artifactId>            </exclusion>            <exclusion>                <groupId>io.swagger</groupId>                <artifactId>swagger-models</artifactId>            </exclusion>        </exclusions>    </dependency>    <!--解决进入swagger页面报类型转换谬误,排除2.9.2中的援用,手动减少1.5.21版本-->    <dependency>        <groupId>io.swagger</groupId>        <artifactId>swagger-annotations</artifactId>        <version>1.5.21</version>    </dependency>    <dependency>        <groupId>io.swagger</groupId>        <artifactId>swagger-models</artifactId>        <version>1.5.21</version>    </dependency>    <!--swagger-ui-->    <dependency>        <groupId>io.springfox</groupId>        <artifactId>springfox-swagger-ui</artifactId>        <version>2.9.2</version>    </dependency>    <!--代码生成器-->    <dependency>        <groupId>com.baomidou</groupId>        <artifactId>mybatis-plus-generator</artifactId>        <version>3.0.5</version>    </dependency>    <dependency>        <groupId>org.apache.velocity</groupId>        <artifactId>velocity-engine-core</artifactId>        <version>2.0</version>    </dependency>    <!--数据库驱动-->    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>    </dependency>    <!--lombok-->    <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>    </dependency>    <!--mybatis-plus 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>

复制代码
配置SpringBoot配置文件

配置数据库

spring.datasource.username=root
spring.datasource.password=kylin
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

配置日志 控制台输入

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

配置逻辑删除 默认为0 逻辑删除后为1

mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

设置开发环境

spring.profiles.active=dev

敞开MybatisPlus的驼峰命名

mybatis-plus.configuration.map-underscore-to-camel-case=false

复制代码
因为测试中要应用MyBatisPlus的乐观锁,Sql性能剖析,主动填充性能,填充策略。所以咱们要配置MyBatisPlus的配置类,和处理器。详情见博客的MyBatis-Plus的CRUD及其扩大文章。同时还应用Swagger,所以也要配置Swagger配置类。详情见博客文章SpringBoot集成Swagger

{% note success %}
MybatisPlusConfig
{% endnote %}
//@MapperScan("com.kylin.mapper")//扫描mapper文件夹
@EnableTransactionManagement//主动治理事务
@Configuration//配置类
public class MybatisPlusConfig {

//注册乐观锁插件@Beanpublic OptimisticLockerInterceptor optimisticLockerInterceptor() {    return new OptimisticLockerInterceptor();}//注册分页插件@Beanpublic PaginationInterceptor paginationInterceptor() {    return new PaginationInterceptor();}//逻辑删除组件@Beanpublic ISqlInjector sqlInjector() {    return new LogicSqlInjector();}//性能剖析插件@Bean@Profile({"dev","test"})// 设置 dev test 环境开启,保障咱们的效率public PerformanceInterceptor performanceInterceptor() {    PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();    performanceInterceptor.setMaxTime(100);//运行工夫超过1毫秒,就不执行。    //performanceInterceptor.setFormat(true);//是否格式化代码    return performanceInterceptor;}

}
复制代码
{% note success %}
MyMetaObjectHandler
{% endnote %}

@Slf4j
@Component//肯定不要遗记把处理器增加到Spring的IOC容器中
public class MyMetaObjectHandler implements MetaObjectHandler {

//插入时的填充策略@Overridepublic void insertFill(MetaObject metaObject) {    //其中办法参数中第一个是后面主动填充所对应的字段,第二个是要主动填充的值。第三个是指定实体类的对象    log.info("start insert fill.....");    this.setFieldValByName("createTime",new Date(),metaObject);//插入数据时给createTime插入一个工夫    this.setFieldValByName("updateTime",new Date(),metaObject);}//更新时的填充策略@Overridepublic void updateFill(MetaObject metaObject) {    this.setFieldValByName("updateTime",new Date(),metaObject);//更新数据时给updateTime插入一个工夫}

}
复制代码
{% note success %}
SwaggerConfig
{% endnote %}
@Configuration//配置类
@EnableSwagger2//开启swagger2
public class SwaggerConfig {

//配置了Swagger的Docket的bean实例@Beanpublic Docket docket(Environment environment) {    //设置要显示的Swagger环境    Profiles profiles = Profiles.of("dev", "test");    //通过environment.acceptProfiles判断是否处在本人设定的环境中    boolean flag = environment.acceptsProfiles(profiles);    System.out.println(flag);    return new Docket(DocumentationType.SWAGGER_2)            .apiInfo(apiInfo())            //enable:是否启动swagger 为false 不能浏览器中拜访            .enable(flag)            .groupName("Kylin")            .select()            //RequestHandlerSelectors 配置要扫描接口的形式            //basePackage():指定要扫描的包            //any():扫描全副            //none():不扫描            //withClassAnnotation():扫描类上的注解 参数是一个注解的反射对象            //withMethodAnnotation():扫描办法上的注解            .apis(RequestHandlerSelectors.basePackage("com.kylin.controller"))            //paths()过滤什么门路            //.paths(PathSelectors.ant("/kylin/**"))            .build();}//配置Swagger信息 apiInfoprivate ApiInfo apiInfo() {    Contact contact = new Contact("Kylin", "https://www.kylin.show", "zhang171346168@qq.com");    return new ApiInfo(            "Kylin的SwaggerAPI文档",//题目            "学习不易,致力致力~",//形容            "v1.0",//版本            "https://www.kylin.show",//组织链接            contact,//联系人信息            "Apache 2.0",//许可            "http://www.apache.org/licenses/LINCENSE-2.0",//许可链接            new ArrayList());}

}
复制代码
到此为之环境搭建实现!