官网配置参数说明地址: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注入器寻到方法。