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