乐趣区

关于easyui:MyBatisPlus代码生成器

代码生成器
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 {

// 注册乐观锁插件
@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"})// 设置 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 {

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

// 更新时的填充策略
@Override
public void updateFill(MetaObject metaObject) {this.setFieldValByName("updateTime",new Date(),metaObject);// 更新数据时给 updateTime 插入一个工夫
}

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

// 配置了 Swagger 的 Docket 的 bean 实例
@Bean
public 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 信息 apiInfo
private 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());
}

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

退出移动版