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