MyBatisPlus性能分析插件,条件构造器,代码自动生成器详解
性能分析插件
我们在平时的开发中,会遇到一些慢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性能分析插件,条件构造器,代码自动生成器详解的更多相关文章
- MySQL性能分析、及调优工具使用详解
本文汇总了MySQL DBA日常工作中用到的些工具,方便初学者,也便于自己查阅. 先介绍下基础设施(CPU.IO.网络等)检查的工具: vmstat.sar(sysstat工具包).mpstat.op ...
- Mybatis-plus<一> Springboot框架使用MybatisPlus代码自动生成器
Mybatis-plus<一> Springboot框架使用MybatisPlus代码自动生成器 Mybatis-plus官网: https://mp.baomidou.com/ Demo ...
- MyBatis-plus 代码自动生成器
MyBatis-plus 代码自动生成器 1.添加pom文件依赖 <!-- Mybatis-Plus 自动生成实体类--> <dependency> <groupId& ...
- Mybatis-Plus03 代码自动生成器
先看完Mybatis-Plus01和Mybatis-Plus02再看Mybatis-Plus03 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerato ...
- 专门为小白准备的入门级mybatis-plus-generator代码自动生成器,提高开发效率。值得收藏
引入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-g ...
- 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...
- php调用C代码的方法详解和zend_parse_parameters函数详解
php调用C代码的方法详解 在php程序中需要用到C代码,应该是下面两种情况: 1 已有C代码,在php程序中想直接用 2 由于php的性能问题,需要用C来实现部分功能 针对第一种情况,最合适的方 ...
- Understand:高效代码静态分析神器详解(转)
之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面,虽说很多东西都方便了,但是却没有了静态代码分析工具,很幸运,前段时间找到一款比source ins ...
- Understand:高效代码静态分析神器详解(一)
Understand:高效代码静态分析神器详解(一) Understand 之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面,虽说很多东西都方便 ...
随机推荐
- Python之爬虫(二十六) Scrapy登录知乎
因为现在很多网站为了限制爬虫,设置了为只有登录才能看更多的内容,不登录只能看到部分内容,这也是一种反爬虫的手段,所以这个文章通过模拟登录知乎来作为例子,演示如何通过scrapy登录知乎 在通过scra ...
- bzoj1661[Usaco2006 Nov]Big Square 巨大正方形*
bzoj1661[Usaco2006 Nov]Big Square 巨大正方形 题意: n*n的图中有一些J点,一些B点和一些空白点,问在空白点添加一个J点所能得到的有4个J点组成最大正方形面积.n≤ ...
- Python2爬取学生名单
背景: 学校的网站可以根据学号查学生姓名和成绩(三年后的补充:借助sql注入漏洞跳过密码,但是该网站现在已经被弃用了),所以我希望通过Python的爬虫得到年级所有同学的学号与姓名对应表. 实现: 首 ...
- 并发编程之synchronized(二)------jvm对synchronized的优化
一.锁的粗化 看如下代码 public class Test { StringBuffer stb = new StringBuffer(); public void test1(){ //jvm的优 ...
- Java常用API(Arrays类)
Java常用API(Arrays类) 什么是Arrays类? java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等.其所有方法均为静态方法,调用起来 非常简单. 这里我们 ...
- Azure 提供负载均衡(一)Azure Traffic Manager 为我们的Web项目提供负载均衡
一,引言 上一篇讲到我们将自己的Net Core Web 项目部署到 Azure 的 Web App 的一项 pass 服务,假如随着项目的日益增长的访问量,之前部署到单节点的应用可能无法保证其稳定性 ...
- Python 中的面向对象编程
面向对象编程(Object-oriented programming, OOP)是一种基于对象概念的编程范式,可包含属性(attribute)形式的数据以及方法(method)形式的代码.另一种对 O ...
- Goorm永久免费的VPS
简介 咱在LOC(某知名主机论坛)看到的,当个容器玩玩还是不错的,不过10分钟后会休眠,目前还没有大佬可以解决,可以使用SSH连接,适合折腾,不适合建站等生产环境操作,请注意.https://www. ...
- Nginx/Httpd负载均衡tomcat配置
在前一篇博客中我们聊了下用Nginx和httpd对后端tomcat服务做反代相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13334180.html: ...
- .net core 发布程序命令(自带运行环境)
dotnet publish -c Release -r linux-x64 --self-contained true

