springboot整合mybatis-plus代码自动生成和SQL性能查看

(一)自动生成代码

1.导包

        <!-- 生成代码模板 https://mvnrepository.com/artifact/p6spy/p6spy -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <!--代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--SQL性能查看-->
        <dependency>
            <groupId>p6spy</groupId>
            <artifactId>p6spy</artifactId>
            <version>3.9.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3.4</version>
        </dependency>    

用的是mybatis官网上介绍的新版代码生成器

2.准备工作

1.新建完springboot项目后导入上面的包,然后在boot的主启动类上直接写个普通运行类就行了

 

 

 

 

 

 2.把要生成代码的数据库表准备好

3.代码生成配置

对照官网把上面罗列的都写出来了,没用上的我都注释掉了,根据自己需求生成,感觉比mybatis的自动生成舒服

package com.dlb;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;


//代码生成
public class DlbCode {
    public static void main(String[] args) {

        //数据库配置
        String url = "jdbc:mysql://xx.xx.xx.22:3306/数据库名?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8";
        String root = "数据库账号";
        String pwd = "密码";
        DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(url,root,pwd)
                /*.dbQuery(new MySqlQuery())//数据库查询
                .schema("mybatis-plus")//数据库schema(部分数据库适用)
                .typeConvert(new MySqlTypeConvert())//    数据库类型转换器
                .keyWordsHandler(new MySqlKeyWordsHandler())//数据库关键字处理器*/
                .build();
        //全局设置
        GlobalConfig globalConfig = new GlobalConfig.Builder()
                .fileOverride()
                .outputDir(System.getProperty("user.dir") + "/src/main/java")
                .author("大萝卜")
                .fileOverride()//覆盖生成文件,默认为false
                .disableOpenDir()//禁止打开输出目录,默认为TRUE
                //.enableKotlin()//生成kotlin代码
                .enableSwagger()//开启swagger,默认为false
                .dateType(DateType.TIME_PACK)//时间策略
                .commentDate("yyyy-MM-dd").build();
        //包设置
        PackageConfig packageConfig = new PackageConfig.Builder()
                .parent("com")
                .moduleName("dlb")
                .entity("pojo")
                .service("service")
                .serviceImpl("service.impl")
                .mapper("mapper")
                //.mapperXml("mapper.xml")
                .controller("controller")
                .other("other")
                //.pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://")
                .build();
        //模板配置
        TemplateConfig templateConfig = new TemplateConfig.Builder()
//                .disable(TemplateType.ENTITY)
//                .entity("/templates/entity.java")
//                .service("/templates/service.java")
//                .serviceImpl("/templates/serviceImpl.java")
//                .mapper("/templates/mapper.java")
//                .mapperXml("/templates/mapper.xml")
//                .controller("/templates/controller.java")
                .build();
        //策略配置
        StrategyConfig pojo = new StrategyConfig.Builder()
                //生成实体模型配置
                .entityBuilder()
                //.superClass(BaseEntity.class)//设置父类
                .disableSerialVersionUID()//禁用生成 serialVersionUID    默认值:true
                //.enableChainModel()//生成的get和set方法是链式调用的
                .enableLombok()//开启 lombok 模型    默认值:false
                .enableRemoveIsPrefix()//开启 Boolean 类型字段移除 is 前缀
                .enableTableFieldAnnotation()//开启生成实体时生成字段注解
                //.enableActiveRecord()//开启 ActiveRecord 模型
                .versionColumnName("version")//乐观锁字段名(数据库)
                .versionPropertyName("version")//乐观锁属性名(实体)
                .logicDeleteColumnName("deleted")//逻辑删除字段名(数据库)
                .logicDeletePropertyName("deleteFlag")//    逻辑删除属性名(实体)
                .naming(NamingStrategy.underline_to_camel)//数据库表映射到实体的命名策略    下划线转驼峰命
                .columnNaming(NamingStrategy.underline_to_camel)//数据库表字段映射到实体的命名策略    默认为 null
                .addSuperEntityColumns("id", "created_by", "created_time", "updated_by", "updated_time")//添加父类公共字段
                .addIgnoreColumns("age")//添加忽略字段
                .addTableFills(new Column("create_time", FieldFill.INSERT))//添加表字段填充
                .addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE))//添加表字段填充
                .idType(IdType.AUTO)//全局主键类型
                //.formatFileName("%sEntity")//格式化文件名称
                .build();
        StrategyConfig controller = new StrategyConfig.Builder()
                //controller策略配置
                .controllerBuilder()
                .enableRestStyle()//开启生成@RestController 控制器 默认false
                .build();
        StrategyConfig service = new StrategyConfig.Builder()
                //service策略配置
                .serviceBuilder()
//                .superServiceClass(BaseService.class)
//                .superServiceImplClass(BaseServiceImpl.class)
                .formatServiceFileName("%sService")//格式化 service 接口文件名称
                .formatServiceImplFileName("%sServiceImp")//格式化 service 实现类文件名称
                .build();
        StrategyConfig mapper = new StrategyConfig.Builder()
                .mapperBuilder()
                .superClass(BaseMapper.class)
                .enableMapperAnnotation()//开启 @Mapper 注解
                .enableBaseResultMap()//启用 BaseResultMap 生成    默认值:false
                .enableBaseColumnList()//启用 BaseColumnList    默认值:false
                //.cache(MyMapperCache.class)//缓存实现类
                .formatMapperFileName("%sDao")
                .formatXmlFileName("%sMapper")
                .build();
        new AutoGenerator(dataSourceConfig)//数据源
                .global(globalConfig)//全局
                .packageInfo(packageConfig)//
                .template(templateConfig)//模板配置
                //策略配置
                .strategy(pojo)//实体类
                /*.strategy(controller)//控制器
                .strategy(service)//service
                .strategy(mapper)//mapper*/
                .execute();
    }
}

4.运行

点击主方法运行,部分展示如图

 

 

 

 

 

 (二)SQL性能查看

1.导包

开头导入的包有一个p6psy

2.springboot的配置文件

#链接配置,更改为p6spy,可以查看SQL用时性能分析
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
spring.datasource.url=jdbc:p6spy:mysql://xx.xx.xx.xx:3306/数据库名?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#下面注释掉的是不用SQL性能分析的正常写法,有个对比---只需要更改原来的这两行就行了
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #spring.datasource.url=jdbc:mysql://xx.xx.xx.xx:3306/数据库名?useSSL=true
&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 spring.datasource.username=账号 spring.datasource.password=密码 #指定连接池 #spring.datasource.type= #逻辑删除 mybatis-plus.global-config.db-config.logic-delete-value=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0 #开启驼峰命名 mybatis-plus.configuration.map-underscore-to-camel-case=true #配置日志 当前是默认的 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

3.配置spy

在resources下新建spy.properties

driverlist=com.mysql.cj.jdbc.Driver

#logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat
#logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat

databaseDialectDateFormat=yyyy-MM-dd HH:mm:ss

#appender=com.p6spy.engine.spy.appender.StdoutLogger


#SQL 性能分析
#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#3.2.1以下使用或者不配置
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2

4.查看SQL性能

在测试类中随便调用一个查询,就能在控制台查看SQL的执行时间,执行语句是什么

 

posted @ 2022-02-14 15:01  大萝卜萌萌哒  阅读(464)  评论(0编辑  收藏  举报