spring boot項目集成Mybatis-Plus 3.0.5


1.首先引入Mybatis-Plus相關jar包

        <properties>
            <mybatisplus.version>3.0.5</mybatisplus.version>      
        </properties> 

        <!-- mybatisplus與springboot整合 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>${mybatisplus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatisplus.version}</version>
        </dependency>

2.application.yml文件中添加Mybatis-Plus的配置,根據自己業務來設置,詳細請移步官方文檔

# ╔══════════════════════mybatis-plus═══════════════════╗
# ║                                                     ║
# ║ https://mp.baomidou.com/config/#checkconfiglocation ║
# ╚═════════════════════════════════════════════════════╝
mybatis-plus:
  # 配置掃描xml
  mapper-locations: classpath:/mybatis/*/*Mapper.xml
  # 實體掃描,多個package用逗號或者分號分隔
  type-aliases-package: com.dawn.rockcandy.modules.*.entity
  # 枚舉類 掃描路徑,如果配置了該屬性,會將路徑下的枚舉類進行注入,讓實體類字段能夠簡單快捷的使用枚舉屬性
  #  type-enums-package:
  # 啟動時是否檢查 MyBatis XML 文件的存在,默認不檢查。
  #  check-config-location: true
  # 該配置請和 typeAliasesPackage 一起使用,如果配置了該屬性,則僅僅會掃描路徑下以該類作為父類的域對象 。
  #  type-aliases-super-type: java.lang.Object
  # TypeHandler 掃描路徑,如果配置了該屬性,SqlSessionFactoryBean 會把該包下面的類注冊為對應的 TypeHandler。
  type-handlers-package: com.dawn.rockcandy.common.handler
  # MyBatis-Plus 全局策略配置
  global-config:
    db-config:
# id主鍵生成規則,可選 id-type: id_worker # 邏輯刪除配置(下面2個配置) logic-delete-value: 1 logic-not-delete-value: 0 # 表名、是否使用下划線命名,默認數據庫表使用下划線命名 table-underline: true # 表名前綴 # table-prefix: configuration: # 配置返回數據庫(column下划線命名&&返回java實體是駝峰命名),自動匹配無需as(沒開啟這個,SQL需要寫as: select user_id as userId) map-underscore-to-camel-case: true # MyBatis 自動映射時未知列或未知屬性處理策略,通過該配置可指定 MyBatis 在自動映射過程中遇到未知列或者未知屬性時如何處理 # AutoMappingUnknownColumnBehavior.NONE:不做任何處理 (默認值) # AutoMappingUnknownColumnBehavior.WARNING:以日志的形式打印相關警告信息 # AutoMappingUnknownColumnBehavior.FAILING:當作映射失敗處理,並拋出異常和詳細信息 auto-mapping-unknown-column-behavior: WARNING # 如果查詢結果中包含空值的列,則 MyBatis 在映射的時候,不會映射這個字段 call-setters-on-nulls: false cache-enabled: true

3.在Application啟動類上添加上掃描dao層的注解

@MapperScan("com.dawn.rockcandy.modules.*.dao") //這里是掃描你的dao層包路徑

這時候springboot項目就已經集成了mybatis-plus,當然你可以加入一些其他的配置,下面的配置僅供參考

4.添加mybatis-plus的配置文件 MybatisPlusConfig.class

package com.dawn.rockcandy.common.config;

import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * mybatis-plus配置
 *
 * @author tangzedong
 * @since 2019-1-10 15:53:11
 */
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {

    /**
     * 邏輯刪除
     */
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }

    /***
     * plus 的性能優化
     */
    @Bean
    public PerformanceInterceptor performanceInterceptor() {
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        /*<!-- SQL 執行性能分析,開發環境使用,線上不推薦。 maxTime 指的是 sql 最大執行時長 -->*/
        performanceInterceptor.setMaxTime(1000);
        /*<!--SQL是否格式化 默認false-->*/
        performanceInterceptor.setFormat(true);
        return performanceInterceptor;
    }

    /**
     * mybatis-plus分頁插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

}

5.mybatis-plus的自動注入參數 MybatisPlusDataHandler.class

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @author tangzedong
 * @apiNote mybatis-plus 自動填充處理器
 * @since 2018/12/2 12:41
 */
@Component
public class MybatisPlusDataHandler implements MetaObjectHandler {
    /**
     * 添加元數據參數自動填充
* 需要三個參數(字段名稱【對應javabean的屬性】,字段默認值【如果類型不一樣會報錯】,metaObject)
* javabean的屬性需要添加注解@TableField(fill = FieldFill.INSERT)
*/ @Override public void insertFill(MetaObject metaObject) { setFieldValByName("creationTime", new Date(), metaObject); setFieldValByName("delFlag", false, metaObject); } /** * 修改元數據參數自動填充
* javabean的屬性需要添加注解@TableField(fill = FieldFill.UPDATE)
*/ @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("modificationTime", new Date(), metaObject); } }

這里提供一個自定義模板根據數據庫生成java代碼的工具(基於mybatis-plus3.0.5)

傳送門 項目是根據人人開源項目修改來的,可自行拉取,根據自己項目調整模板源碼(可以順手點個星嗎?)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM