性能分析插件

我们在平时的开发中,会遇到一些慢sql,测试,druid

MP(MyBatisPlus)也提供性能分析插件,如果超过这个时间就停止

不过官方在3.2版本的时候取消了,原因如下

条件构造器

十分重要: Wrapper

我们写一些复杂查询的时候

首先创建一个测试类

@SpringBootTest
public class MyBatisPlusWrapperTest {
@Autowired
private AirMapper airMapper;
}
// 查询一些用户:
// 查询一下pm10为22且monitoring_station不为空的用户,
@Test
public void test1(){
QueryWrapper<Air> wrapper = new QueryWrapper<>();
wrapper.isNotNull("monitoring_station")//数据库中的名字,而不是实体类中的名字
.eq("pm10",22);
List<Air> airList = airMapper.selectList(wrapper);//可以对比下map的查询
airList.forEach(System.out::println);//循环遍历输出
}
//查询单个用户
@Test
public void test2() {
QueryWrapper<Air> wrapper = new QueryWrapper<>();
wrapper.eq("id",222);
airMapper.selectOne(wrapper); }
//Butween And
//查询pm25在40-60之间的用户和数量
@Test
public void test3() {
QueryWrapper<Air> wrapper = new QueryWrapper<>();
wrapper.between("pm25",40,60);//区间
airMapper.selectList(wrapper).forEach(System.out::println);
System.out.println(airMapper.selectCount(wrapper));//查询结果数
}
//模糊查询
//查询monitor_station中带"站"的,切不带"哈"的
@Test
public void test4() {
QueryWrapper<Air> wrapper = new QueryWrapper<>();
wrapper.like("monitoring_station","站").notLike("monitoring_station","哈");
airMapper.selectList(wrapper).forEach(System.out::println);
}
//查询以哈开头切以站结尾的 哈% %站
@Test
public void test5() {
QueryWrapper<Air> wrapper = new QueryWrapper<>();
wrapper.likeLeft("monitoring_station","站").likeRight("monitoring_station","哈");
airMapper.selectList(wrapper).forEach(System.out::println);
}
//嵌入sql查询
@Test
public void test6() {
QueryWrapper<Air> wrapper = new QueryWrapper<>();
wrapper.inSql("district_id","select id from air where district_id = id");
airMapper.selectObjs(wrapper).forEach(System.out::println);
}
//多表查询
//通过id进行排序
@Test
public void test7() {
QueryWrapper<Air> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("id");
airMapper.selectList(wrapper).forEach(System.out::println);
}

代码生成器

导入依赖

在3.0.3版本以后代码生成器需要手动添加依赖

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>

根据前端的模板引擎导入相应依赖(我没写前端页面就随便导入了一个velocity的)记住一定要加入其中一个,否则会报错

具体配置代码

package com.cloudcentury.mybatis;

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.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import java.util.ArrayList; /**
* ClassName:臭狗屎王溥松
* Package:com.cloudcentury.mybatis
*
* @date:2020/8/7 10:22
* @author:2628710400@qq.com Description:
*/
public class CodeAuto {
public static void main(String[] args) {
//需要构建一个代码自动生成器对象 AutoGenerator ag = new AutoGenerator();//代码生辰器对象
//配置执行策略
//1.全局配置
GlobalConfig gc = new GlobalConfig();//全局配置对象
String property = System.getProperty("user.dir");//获取项目名称
System.out.println(property);
gc.setOutputDir(property+"/src/main/java");//设置代码存放路径
gc.setAuthor("臭狗屎");//设置作者
gc.setOpen(false);//设置是否打开资源管理器(生成完毕后)
gc.setFileOverride(false);//是否覆盖代码
gc.setServiceName("%sService");//去掉Service的I前缀
gc.setIdType(IdType.AUTO);//设置id自动生成类型
gc.setDateType(DateType.ONLY_DATE);//日期时间,仅仅时间
gc.setSwagger2(false);//是否设置swagger
ag.setGlobalConfig(gc);//将全局配置放到里面 //设置数据源
DataSourceConfig desc = new DataSourceConfig();//数据源配置对象
//设置url
desc.setUrl("jdbc:mysql://localhost:3306/air?characterEncoding=utf8&serverTimezone=GMT");
desc.setDriverName("com.mysql.cj.jdbc.Driver");//设置驱动
desc.setUsername("root");//设置用户名
desc.setPassword("12345");//设置密码
desc.setDbType(DbType.MYSQL);//设置数据库类型
ag.setDataSource(desc);//将数据源放到里面 //包的配置
//说白了就是说需要生成那些包,叫什么
PackageConfig pc = new PackageConfig();//包配置对象
pc.setModuleName("com");//模块名字
pc.setParent("com.cloudcentury");//父模块名字
pc.setEntity("entity");//Entity包的名字
pc.setMapper("mapper");//mapper包的名字
pc.setService("service");//service包的名字
pc.setController("controller");//controller包的名字
ag.setPackageInfo(pc);//将包的配置放到里面 //策略配置
StrategyConfig sc = new StrategyConfig();
sc.setInclude("air","district"); //设置要映射的表名,这个一定要设置的
sc.setNaming(NamingStrategy.underline_to_camel);//设置名字下划线转大写
sc.setColumnNaming(NamingStrategy.underline_to_camel);//设置列明下划线转大写
sc.setEntityLombokModel(true);//自动生成lombok
sc.setLogicDeleteFieldName("deleted");//逻辑删除的名字 //自动填充配置
TableFill monitor_time = new TableFill("monitor_time", FieldFill.INSERT);//执行插入是更新时间
TableFill last_modify_time = new TableFill("last_modify_time", FieldFill.INSERT);//执行更新时执行的操作
ArrayList<TableFill> tableFills = new ArrayList<>();//创建一个List
tableFills.add(monitor_time);
tableFills.add(last_modify_time);
sc.setTableFillList(tableFills);//这里只有这一个用list的方法
sc.setVersionFieldName("version"); //乐观锁的配置
sc.setRestControllerStyle(true);//开启rest式的驼峰命名
sc.setControllerMappingHyphenStyle(true);//下划线命名:localhost:8080/hello_id_2
ag.setStrategy(sc);//策略配置对象
ag.execute();//执行
}
}

MyBatisPlus性能分析插件,条件构造器,代码自动生成器详解的更多相关文章

  1. MySQL性能分析、及调优工具使用详解

    本文汇总了MySQL DBA日常工作中用到的些工具,方便初学者,也便于自己查阅. 先介绍下基础设施(CPU.IO.网络等)检查的工具: vmstat.sar(sysstat工具包).mpstat.op ...

  2. Mybatis-plus<一> Springboot框架使用MybatisPlus代码自动生成器

    Mybatis-plus<一> Springboot框架使用MybatisPlus代码自动生成器 Mybatis-plus官网: https://mp.baomidou.com/ Demo ...

  3. MyBatis-plus 代码自动生成器

    MyBatis-plus  代码自动生成器 1.添加pom文件依赖 <!-- Mybatis-Plus 自动生成实体类--> <dependency> <groupId& ...

  4. Mybatis-Plus03 代码自动生成器

    先看完Mybatis-Plus01和Mybatis-Plus02再看Mybatis-Plus03 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerato ...

  5. 专门为小白准备的入门级mybatis-plus-generator代码自动生成器,提高开发效率。值得收藏

    引入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-g ...

  6. 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...

  7. php调用C代码的方法详解和zend_parse_parameters函数详解

    php调用C代码的方法详解 在php程序中需要用到C代码,应该是下面两种情况: 1 已有C代码,在php程序中想直接用 2 由于php的性能问题,需要用C来实现部分功能   针对第一种情况,最合适的方 ...

  8. Understand:高效代码静态分析神器详解(转)

    之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面,虽说很多东西都方便了,但是却没有了静态代码分析工具,很幸运,前段时间找到一款比source ins ...

  9. Understand:高效代码静态分析神器详解(一)

    Understand:高效代码静态分析神器详解(一) Understand   之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面,虽说很多东西都方便 ...

随机推荐

  1. HotSpot的对象模型(6)

    接着上一篇,我们继续来讲oopDesc相关的子类. 3.instanceOopDesc类 instanceOopDesc类的实例表示除数组对象外的其它对象.在HotSpot中,对象在内存中存储的布局可 ...

  2. jquery 选项卡切换、选项卡封装、简单的jquery选项卡封装、tab切换效果

    相信选项卡切换是大家常用的效果单独写一个选项卡切换很方便但是要是一个页面出现多个选项卡不做封装的话会显得代码很杂乱 <div class="bodyCenter"> & ...

  3. 计算机网络学习socket--day2

    1.TCP客户/服务器模型(C/S) 2.回射客户/服务器模型 3.socket.bind.listen.accept.connect ||------------------------------ ...

  4. Java设计模式 --- 七大常用设计模式示例归纳

    设计模式分为三种类型,共23种: 创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式 结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式 行为型模式:模 ...

  5. 集训 T2-监考老师

    大致题意: 找出一个位置可以选出最大的"横排总和+竖列总和". 基本思路 利用前缀和的思想在读入的时候把每一列每一行的总和都算出来, 然后暴力枚举每一个点,每一个点的答案就是这一行 ...

  6. 小谢第37问:关于websocket推送进度,本地保存进度条,然后跳出页面进入后再显示的问题

    1.主要技术点:sessionStorage 会话存储进度 这里在使用之前,顺便说一下cookie.sessionStorage.localStorage 共同点:都是保存在浏览器端,且同源的. 区别 ...

  7. 洛谷P1063.能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

  8. PJzhang:python基础入门的7个疗程-seven

    猫宁!!! 参考链接:易灵微课-21天轻松掌握零基础python入门必修课 https://www.liaoxuefeng.com/wiki/1016959663602400 第19天:开源模块 数据 ...

  9. JavaScript动画实例:沿五角星形线摆动的小圆

    五角星形线的笛卡尔坐标方程式可设为: r=10+(3*sin(θ*2.5))^2  x=r*cos(θ) y=r*sin(θ)              (0≤θ≤2π) 根据这个曲线方程,在[0,2 ...

  10. K8s-Pod健康检查原理与实践

    Pod健康检查介绍 默认情况下,kubelet根据容器运行状态作为健康依据,不能监视容器中应用程序状态,例如程序假死.这将会导致无法提供服务,丢失流量.因此重新健康检查机制确保容器健康幸存.Pod通过 ...