Mybatis-plus配置


导入pom依赖

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <!--连接池-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <!--数据库-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
            <scope>runtime</scope>
        </dependency>

新建一个MybatisPlusConfig.java文件

@EnableTransactionManagement // 事物管理
@Configuration
public class MyBatisPlus {

    // 乐观锁插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }

    // 分页插件
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }

    // 逻辑删除配置
    @Bean
     public ISqlInjector iSqlInjector(){
        return new LogicSqlInjector();
     }

     // sql 效率插件
    @Bean
    @Profile({"dev","test"})
    public PerformanceInterceptor performanceInterceptor(){
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        performanceInterceptor.setMaxTime(1000); // ms 最大执行时间超过不执行
        performanceInterceptor.setFormat(true); // 是否开启格式化支持
        return performanceInterceptor;
    }
}

在来点mybatis-plus的跟新策略

@Slf4j
@Component
public class MyMeteObject implements MetaObjectHandler {
    // 插入时的跟新策略
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("stats info hander.....");
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
    // 修改时的跟新策略
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

在启动类中扫描resources下的mapper文件

 

 

 

 

在application.properties文件添加数据库和mybatis-plus配置 

# mysql配置 mysql 8 版本需要配置时区
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dome?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

# 配置当前版本 开发环境
#spring.profiles.active=dev

# redis配置
#spring.redis.host=127.0.0.1
#spring.redis.port=6379


#数据库配置日志 使用控制台输出
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

#配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

 

关键来了,mybatis给我们提供的代码自动生成器。在test中新建一个MybatisGenertot文件,它可以帮助我们根据数据库自动生成controller,service.....等基本代码。

  1. 先添加自动生成依赖

 
 
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.1</version>
</dependency>

  2.新建一个带有main方法的类public class GeneratorCode 

 
 
package com.dome.common.utils.generator;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
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.NamingStrategy;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.Scanner;

/**
* @author auth
* @date 2020/11/25 10:52
* 生成代码
*/
public class GeneratorCode {

public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入" + tip + ":");
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}

public static void main(String[] args) {
AutoGenerator autoGenerator = new AutoGenerator();
//全局配置
GlobalConfig gc = new GlobalConfig();
//得到当前项目的路径
String oPath = System.getProperty("user.dir");
gc.setOutputDir(oPath + "/src/main/java");
//生成完成后不弹出文件框
gc.setOpen(false);
//文件覆盖
gc.setFileOverride(true);
// ActiveRecord特性
gc.setActiveRecord(false);
gc.setEnableCache(false);
gc.setBaseResultMap(true);
gc.setBaseColumnList(true);
// 作者
gc.setAuthor("auth");
gc.setSwagger2(true);
// 自定义文件命名,注意 %s 会自动填充表实体属性!
gc.setControllerName("%sController");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
autoGenerator.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("yourpass");
dsc.setUrl("jdbc:mysql://localhost:3306/sprin_security?useSSL=false&useUnicode=true&nullCatalogMeansCurrent=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai");
autoGenerator.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
//父包路径
pc.setParent("com.dome.cm");
String s = "." + scanner("包名称");
pc.setController("controller" + s);
pc.setService("service" + s);
pc.setServiceImpl("service" + s);
pc.setMapper("mapper" + s);
pc.setXml("mapper" + s);
pc.setEntity("po" + s);
autoGenerator.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
// 表名生成策略
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
// 需要生成的表
strategy.setInclude(scanner("表名称").split(","));
strategy.setSuperServiceClass(null);
strategy.setSuperServiceImplClass(null);
strategy.setSuperMapperClass(null);
//去除表前缀
strategy.setTablePrefix("sys_", "sw_");
//去除字段前缀
strategy.setFieldPrefix("");
// 填充策略
strategy.setLogicDeleteFieldName("del_flag");
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);
strategy.setTableFillList(tableFills);
strategy.setVersionFieldName("version");
strategy.setRestControllerStyle(true);
autoGenerator.setStrategy(strategy);
// 执行生成
autoGenerator.execute();
}
}
 

  3.执行main方法输入数据库表名 回车。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM