1. 程式人生 > >mybatis-plus 3.X 配置

mybatis-plus 3.X 配置

conf gin 說明 get 註意 banner bool and 封裝

官網配置參數說明地址:https://mp.baomidou.com/config/#logicdeletevalue
本地配置:yml
mybatis-plus:
  mapper-locations: classpath*:mybatis/*.xml
  type-aliases-package: com.genergy.cloud.model.entity
  global-config:
    db-config:
      field-strategy: not_empty
      id-type: auto
      db-type: mysql
    banner: false
    super-mapper-class: com.genergy.cloud.mapper.BaseMapper

package com.genergy.cloud.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.Collection;
import java.util.List; /** * BaseMapper 基於 MP 刪減 * * @author Caratacus * @see com.baomidou.mybatisplus.core.mapper.BaseMapper */ public interface BaseMapper<T> { /** * <p> * 插入一條記錄 * </p> * * @param entity 實體對象 */ int insert(T entity);
/** * <p> * 批量插入數據 * </p> * * @param entityList 實體對象集合 */ int insertBatchSomeColumn(@Param("list") Collection<T> entityList); /** * <p> * 根據 ID 刪除 * </p> * * @param id 主鍵ID */ int deleteById(Serializable id); /** * <p> * 根據 entity 條件,刪除記錄 * </p> * * @param queryWrapper 實體對象封裝操作類(可以為 null) */ int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 根據 ID 修改 * </p> * * @param entity 實體對象 */ int updateById(@Param(Constants.ENTITY) T entity); /** * <p> * 根據 ID 修改 * </p> * * @param entity 實體對象 */ int updateAllColumnById(@Param(Constants.ENTITY) T entity); /** * <p> * 根據 whereEntity 條件,更新記錄 * </p> * * @param entity 實體對象 (set 條件值,不能為 null) * @param updateWrapper 實體對象封裝操作類(可以為 null,裏面的 entity 用於生成 where 語句) */ int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper); /** * <p> * 根據 ID 查詢 * </p> * * @param id 主鍵ID */ T selectById(Serializable id); /** * <p> * 根據 Wrapper 條件,查詢總記錄數 * </p> * * @param queryWrapper 實體對象 */ Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 根據 entity 條件,查詢全部記錄 * </p> * * @param queryWrapper 實體對象封裝操作類(可以為 null) */ List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 根據 Wrapper 條件,查詢全部記錄 * 註意: 只返回第一個字段的值 * </p> * * @param queryWrapper 實體對象封裝操作類(可以為 null) */ List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 根據 entity 條件,查詢全部記錄(並翻頁) * </p> * * @param page 分頁查詢條件(可以為 RowBounds.DEFAULT) * @param queryWrapper 實體對象封裝操作類(可以為 null) */ IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper); }
package com.genergy.cloud.mybatisplus;

import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.AbstractSqlInjector;
import com.baomidou.mybatisplus.core.injector.methods.*;
import com.baomidou.mybatisplus.extension.injector.methods.additional.InsertBatchSomeColumn;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * <p>
 * MybatisPlusSql註入器
 * </p>
 *
 * @author Caratacus
 */
public class MybatisPlusSqlInjector extends AbstractSqlInjector {

    @Override
    public List<AbstractMethod> getMethodList() {
        return Stream.of(
                new Insert(),
                new InsertBatchSomeColumn(t -> true),
                new Delete(),
                new DeleteById(),
                new Update(),
                new UpdateById(),
                new UpdateAllColumnById(),
                new SelectById(),
                new SelectCount(),
                new SelectObjs(),
                new SelectList(),
                new SelectPage()
        ).collect(Collectors.toList());
    }

}
package com.genergy.cloud.mybatisplus.config;

import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.genergy.cloud.mybatisplus.CommonMetaObjectHandler;
import com.genergy.cloud.mybatisplus.MybatisPlusSqlInjector;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * MybatisPlus 配置
 *
 * @author Caratacus
 */
@Configuration
public class MybatisPlusAutoConfiguration {

    /**
     * 分頁
     *
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    /**
     * 樂觀鎖
     *
     * @return
     */
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }

    /**
     * 自動填充
     *
     * @return
     */
    @Bean
    public CommonMetaObjectHandler commonMetaObjectHandler() {
        return new CommonMetaObjectHandler();
    }

    /**
     * 自定義註入語句
     *
     * @return
     */
    @Bean
    public MybatisPlusSqlInjector mybatisPlusSqlInjector() {
        return new MybatisPlusSqlInjector();
    }
}

註意:
super-mapper-class: com.genergy.cloud.mapper.BaseMapper 官網好像沒有找到super-mapper-class配置說明,如果不配置該項會導致明明繼承了basemapper 但是裏面的方法一直報找不到。原因好像在controller時 調用aop,通過sql註入器尋到方法。
 
 
 


 
 
 

mybatis-plus 3.X 配置