1. 程式人生 > 實用技巧 >Mybatis-plus配置

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.....等基本程式碼。

public class MyBatisGenertor {
    public static void main(String[] args) {
        // 程式碼自動生成器
        AutoGenerator autoGenerator = new AutoGenerator();
        // 全域性配置
        GlobalConfig globalConfig = new GlobalConfig(); // 導generator包
        String property = System.getProperty("user.dir"); // 獲取使用者的目錄
        globalConfig.setOutputDir(property + "src/main/java");
        globalConfig.setAuthor("YarMar");
        globalConfig.setFileOverride(false);
        globalConfig.setOpen(false);
        globalConfig.setServiceName("%sService"); // 去掉servic的i字首
        globalConfig.setIdType(IdType.ID_WORKER);
        globalConfig.setDateType(DateType.ONLY_DATE);
        globalConfig.setSwagger2(true);

        autoGenerator.setGlobalConfig(globalConfig);

        // 設定資料來源
        DataSourceConfig dt = new DataSourceConfig();
        dt.setUrl("jdbc:mysql://localhost:3306/dome?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC");
        dt.setUsername("root");
        dt.setPassword("123456");
        dt.setDriverName("com.mysql.cj.jdbc.Driver");

        // 包的配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setModuleName("bool");
        packageConfig.setParent("com.dc.yamar");
        packageConfig.setEntity("entity");
        packageConfig.setMapper("mapper");
        packageConfig.setService("service");
        packageConfig.setController("controller");

        autoGenerator.setPackageInfo(packageConfig);

        // 配置策略
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setInclude("user"); // 設定要隱射的表 可以多張
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setEntityLombokModel(true);
        strategyConfig.setRestControllerStyle(true);
        strategyConfig.setLogicDeleteFieldName("isDelete"); // 邏輯刪除
        // 自動填充
        TableFill createTime = new TableFill("create_time", FieldFill.INSERT);
        TableFill updateTime = new TableFill("update_time", FieldFill.INSERT_UPDATE);

        ArrayList<TableFill> list = new ArrayList<>();
        list.add(createTime);
        list.add(updateTime);
        strategyConfig.setTableFillList(list);

        strategyConfig.setVersionFieldName("version"); //樂觀鎖
        strategyConfig.setRestControllerStyle(true);
        strategyConfig.setControllerMappingHyphenStyle(true); // 啟動下劃線

        autoGenerator.setStrategy(strategyConfig);

        autoGenerator.execute(); //執行
    }
}

執行MybatisGenertot,搞定。