mybatis插件原理(web前端三大主流框架)

一、引言

在我们日常开发工作当中,避免不了查看当前程序所执行的SQL语句,便于程序员排忧解难呐。

MP提供了两种方式,用于输出每条SQL语句及其执行时间,针对执行较长时间的SQL可以停止运行,有助于发现问题。

这两种方式只适用于开发环境,不建议生产环境使用。

二、性能分析插件

该插件 3.2.0 以上版本移除,推荐使用第二种方式(执行SQL分析打印)方式。

步骤一:在MP配置类中配置该插件,并且只适用于DEV环境

/**
 * @Description: MybatisPlus配置类
 */
@Configuration
public class MyBatisPlusConfig {
 
 
    /**
     * SQL执行效率插件
     *
     * @return
     */
    @Bean
    @Profile({"dev"}) // 指定环境为dev生效
    public PerformanceInterceptor performanceInterceptor() {
        PerformanceInterceptor interceptor = new PerformanceInterceptor();
        // sql美化打印
        interceptor.setFormat(true);
        // 设置SQL超时时间
        interceptor.setMaxTime(5000L);
        return interceptor;
    }
}

步骤二:设置环境为dev,可以在yml如下配置,或者直接测试类中也是可以设置的,如图。

spring:
  profiles:
    active: dev

MyBatisPlus高级功能——SQL性能分析打印插件

步骤三:测试测试,在控制台中打印selectList这个方法执行了32 ms,同时也打印了最后执行的sql语句。

 @Test
    public void select(){
        List<User> users = userMapper.selectList(Wrappers.<User>lambdaQuery().eq(User::getAge, 18));
        users.forEach(System.out::println);
    }
DEBUG==>  Preparing: SELECT id,login_name,name,password,email,salt,sex,age,phone,user_type,status,organization_id,create_time,update_time,version FROM sys_user WHERE is_delete='0' AND age = ? 
DEBUG==> Parameters: 18(Integer)
DEBUG<==      Total: 0
 Time:35 ms - ID:com.example.demo.mapper.UserMapper.selectList
Execute SQL:
    SELECT
        id,
        login_name,
        name,
        password,
        email,
        salt,
        sex,
        age,
        phone,
        user_type,
        status,
        organization_id,
        create_time,
        update_time,
        version 
    FROM
        sys_user 
    WHERE
        is_delete='0' 
        AND age = 18

三、执行SQL分析打印

这个功能依赖p6spy组件,完美的输出打印SQL以及执行时长,支持MP3.1.0以上版本。

步骤一:引入p6spy的maven依赖

<!--sql 分析打印-->
<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>3.8.2</version>
</dependency>

步骤二:更改yml连接数据库配置,主要修改driver-class-name、url中jdbc后需要加上p6spy

spring:
  datasource:
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    url: jdbc:p6spy:mysql://127.0.0.1:3360/test?userSSL=false
    username: root
    password: 123456
  profiles:
    active: dev

步骤三:新增spy.properties文件,内容如下,可以根据需求相对应的修改文件。

module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
 
 
#日志输出到控制台,解开注释就行了
# appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
 
# 指定输出文件位置
logfile=sql.log
 
# 使用日志系统记录 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,batch,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2

步骤四:输出文件格式内容如下

 Consume Time:15 ms 2019-09-20 11:50:31
 Execute SQL:SELECT id,login_name,name,password,email,salt,sex,age,phone,user_type,status,organization_id,create_time,update_time,version FROM sys_user WHERE is_delete='0' AND age = 18

作者:IT贱男

版权声明:本文图片和内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送联系客服 举报,一经查实,本站将立刻删除,请注明出处:https://www.4kpp.com/8413.html

(0)
漫空客漫空客
上一篇 2023年4月23日
下一篇 2023年4月23日

相关推荐

  • 夏天怎么减肥最快(夏天怎么减肥最快的方法)

    今天给大家分享一个关于夏天如何减肥最快的问题。以下是这个问题的总结。让我们来看看。 夏天怎么减肥最快? 夏天是减肥的好时机,因为炎热的天气可以促进人体新陈代谢,加速身体燃烧脂肪。那…

    投稿 2023年4月23日
    960
  • 最近适合旅游的地方(最近适合旅游的地方在哪里)

    今天和大家分享一个关于最近的适合旅游的地方的问题(最近的适合旅游的地方在哪里)。以下是这个问题的总结。让我们来看看。 最近的适合旅行的地方 1.黄山 黄山是中国著名的旅游景点之一,…

    投稿 2023年4月23日
    970
  • 小年九宫格图片大全2021 小年九宫格朋友圈图片怎么弄[多图]

     小年九宫格朋友圈图片怎么弄呢?2月4日就是小年了,小年之后就即将迎来春节了,在这个节日中,很多人都习惯给自己的亲朋好友发图片祝福,同时也会发朋友圈来庆祝,朋友圈的图片最…

    2023年4月22日
    1060
  • 失业保险怎么领取(为什么最好不要领失业金)

    领取失业金需要哪些条件呢?一个人终身只能够领取一次吗?其实现在的失业金和以往的失业金大有不同,因为今天的失业金分为失业保险金和失业补助金两个类别,很多人可能停留在失业金是一个类别上…

    2023年4月23日
    900
  • 所有权包括哪些权利(所有权的基本内容)

    财产所有权人对自己享有所有权的财产的占有、使用、收益、处分权利,在传统民法理论上称为所有权的“权能”。具体内容是: 1.占有。 占有,是对于财产的实际管领或控制。如陈群律师在自己的…

    投稿 2023年4月23日
    2220
  • 钱江潮时间(钱江潮时间表2021年6)

    今天,我将与你分享钱江潮时间的知识,这也将解释2021年6月钱江潮的时间表。如果你碰巧解决了你现在面临的问题,别忘了关注这个网站,现在就开始! 25日钱塘江大潮时间 1.钱塘江大潮…

    投稿 2023年4月23日
    2240
  • 学习电脑(学习电脑知识)

    学习电脑(学习电脑知识) 对于之前很少接触电脑的人来说,一些关于电脑知识学习入门的基础知识是他们最想学到手的,可是又不知该针对百思特网哪方面进行学习,这里为初学者介百思特网绍几种学…

    2023年4月23日
    1160
  • 如果他不爱你我爱你(你很爱一个人但是他不爱你怎么办)

    今天小编给各位分享如果他不爱你我爱你(你很爱一个人但是他不爱你怎么办),如果能碰巧解决你现在面临的问题,别忘了关注小站,我们一起开始吧! 歌词:如果他不爱你,我爱你。\什么歌? 如…

    投稿 2023年4月23日
    1270
  • 系统pe怎么做(pe系统最新版本)

    如何安装Windows11系统?由于Windows11系统被发布,许多朋友们希望在第一次遇到这个新系统。有很多方法可以安装Windows11系统。事实上,最简单的方法是直接安装Wi…

    2023年4月23日
    870
  • 夜不闭户是什么意思(道不拾遗,夜不闭户是什么意思)

    今天我就给大家介绍一下什么叫夜不闭户,以及相应的知识点。希望对你有帮助,也别忘了收藏这个站点。 晚上不关门是什么意思?古人为什么要这么做? 晚上不关门意味着人们晚上不用关门,不用担…

    投稿 2023年4月23日
    990

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注