1.Mybatis-plus簡介
MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。
MyBatis Plus 的核心功能有:支持通用的 CRUD、代碼生成器與條件構造器。
*通用 CRUD:定義好 Mapper 接口后,只需要繼承 BaseMapper<T> 接口即可獲得通用的增刪改查功能,無需編寫任何接口方法與配置文件
*條件構造器:通過 EntityWrapper<T> (實體包裝類),可以用於拼接 SQL 語句,並且支持排序、分組查詢等復雜的 SQL
*代碼生成器:支持一系列的策略配置與全局配置,比 MyBatis 的代碼生成更好用
2.環境搭建
1)配置Maven依賴
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- mybatisPlus 核心庫 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency> <!-- 引入阿里數據庫連接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.6</version> </dependency> </dependencies>
2)配置yml文件
# 配置端口 server: port: 8081 spring: # 配置數據源 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/wwp_user?useUnicode=true&characterEncoding=utf-8 username: root password: root type: com.alibaba.druid.pool.DruidDataSource # mybatis-plus相關配置 mybatis-plus: # xml掃描,多個目錄用逗號或者分號分隔(告訴 Mapper 所對應的 XML 文件位置) mapper-locations: classpath:mapper/*.xml # 以下配置均有默認值,可以不設置 global-config: db-config: #主鍵類型 AUTO:"數據庫ID自增" INPUT:"用戶輸入ID",ID_WORKER:"全局唯一ID (數字類型唯一ID)", UUID:"全局唯一ID UUID"; id-type: auto #字段策略 IGNORED:"忽略判斷" NOT_NULL:"非 NULL 判斷") NOT_EMPTY:"非空判斷" field-strategy: NOT_EMPTY #數據庫類型 db-type: MYSQL configuration: # 是否開啟自動駝峰命名規則映射:從數據庫列名到Java屬性駝峰命名的類似映射 map-underscore-to-camel-case: true # 如果查詢結果中包含空值的列,則 MyBatis 在映射的時候,不會映射這個字段 call-setters-on-nulls: true # 這個配置會將執行的sql打印出來,在開發或測試的時候可以用 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3)配置分頁插件
/** * @Description MybatisPlus配置類 * @Author Sans * @CreateTime 2019/5/26 17:20 */ @Configuration public class MybatisPlusConfig { /** * mybatis-plus SQL執行效率插件【生產環境可以關閉】 */ @Bean public PerformanceInterceptor performanceInterceptor() { return new PerformanceInterceptor(); } /** * 分頁插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
3.mybatis-plus字段策略
在用mybatis-plus封裝的updateById方法來更新數據時,想把一個字段設置為null值,但是發現更新后數據沒有為null還是原來的值,這是因為mybatis-plus在更新的時候做了null判斷,默認不更新為null的傳參。(源碼中可知)
/**
* <p>
* 字段策略枚舉類
* </p>
*
* @author hubin
* @since 2016-09-09
*/
public enum FieldStrategy {
/**
* 忽略判斷
*/
IGNORED,
/**
* 非NULL判斷
*/
NOT_NULL,
/**
* 非空判斷
*/
NOT_EMPTY
}
2)案例
在實體類對應的字段上加注解@TableField(strategy=FieldStrategy.IGNORED),忽略null值的判斷,例如
@TableField(strategy = FieldStrategy.IGNORED) private String userName;