mybatis-plus的性能分析、条件构造器与代码生成器

1、性能分析

1. 配置开发环境

在配置文件中配置开发环境

### 设置开发环境
spring.profiles.active=dev

2. 配置类加入一个Bean对象

    /*
    *  SQL执行效率插件
    * */
    @Bean
    @Profile({
    
    "dev","test"})         //设置 dev test 环境开启,保证我们的效率
    public PerformanceInterceptor performanceInterceptor(){
    
    
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        performanceInterceptor.setMaxTime(100);     //ms 设置sql执行的最大时间,如果超过了则不执行
        performanceInterceptor.setFormat(true);     //是否格式化代码
        return performanceInterceptor;
    }

3. 测试

    @Test
    void contextLoads() {
    
    
        List<User>  users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }

结果:
在这里插入图片描述
如果超出最大的时间,它就不执行

2、条件构造器

测试1

    @Test
    void contextLoads() {
    
    
        // 查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于18
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper
                .isNotNull("name")
                .isNotNull("email")
                .ge("age",18);
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

结果:
在这里插入图片描述
测试二

    @Test
    public void test1(){
    
    
        // 查询age 20 - 25之间
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper
                .between("age",20,25);
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

结果:
在这里插入图片描述
测试三

    @Test
    public void test2(){
    
    
        // 查询name为Tom的用户
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper
                .eq("name","Tom");
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

结果:
在这里插入图片描述
测试四

    @Test
    public void test3(){
    
    
        // 查询name为中不包含y的和email中首字符为t的
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        // 左和右表示 %在左边还是在右边,用于匹配首字符和尾字符
        queryWrapper
                .notLike("name","y")
                .likeRight("email","t");
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

结果:
在这里插入图片描述
测试五

    @Test
    public void test4(){
    
    
        // 子查询
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        // id在子查询中查出来
        queryWrapper
                .inSql("id","select id from user where id < 3");
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

结果:
在这里插入图片描述

3、代码生成器

1. 添加依赖

        <!-- 数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!-- mybatis_plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>

        <!-- Velocity -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
       
        <!-- swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>

2. 编写文件生成的类

package com.hzxy.mybatisplus;

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;

// 代码自动生成器
public class YbgCode {
    
    
    public static void main(String[] args) {
    
    
        // 需要构建一个代码自动生成器对象
        AutoGenerator mpg = new AutoGenerator();
        // 配置策略

        // 1、全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        globalConfig.setOutputDir(projectPath+"/src/main/java");
        globalConfig.setAuthor("Ye");
        globalConfig.setOpen(false);
        globalConfig.setFileOverride(false);      // 是否覆盖
        globalConfig.setServiceName("%sService");     // 去Service的I前缀
        globalConfig.setIdType(IdType.ID_WORKER);
        globalConfig.setDateType(DateType.ONLY_DATE);
        globalConfig.setSwagger2(true);
        mpg.setGlobalConfig(globalConfig);

        // 2、设置数据源
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("520China");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 3、包的配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName("blog");
        pc.setParent("com.hzxy.mybatisplus");
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setController("controller");
        mpg.setPackageInfo(pc);

        // 4、策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setInclude("user");   //设置要映射的表名
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setEntityLombokModel(true);    // 自动Lombok

        strategyConfig.setLogicDeleteFieldName("deleted");
        // 自动填充配置
        TableFill createTime = new TableFill("create_time", FieldFill.INSERT);
        TableFill updateTime = new TableFill("update_time",FieldFill.INSERT_UPDATE);
        ArrayList<TableFill> tableFills = new ArrayList<>();

        tableFills.add(createTime);
        tableFills.add(updateTime);
        strategyConfig.setTableFillList(tableFills);

        // 乐观锁
        strategyConfig.setVersionFieldName("version");

        strategyConfig.setRestControllerStyle(true);
        strategyConfig.setControllerMappingHyphenStyle(true);
        mpg.setStrategy(strategyConfig);

        mpg.execute();
    }
}

运行后
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43520670/article/details/114071492
今日推荐