MyBatis-Plus 扩展全局方法
1.文件内容
package com.ruoyi.business.mybatisplus.base;import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;import java.util.List;/*** 扩展的 Service 接口* 所有自定义 Service 接口都需要继承此接口** @param <T> 实体类类型*/
public interface BaseService<T> extends IService<T> {/*** 获取表名*/String getTableName();/*** 查询所有数据(忽略自动条件)*/List<T> listAll(Wrapper<T> wrapper);Integer deleteAll(Wrapper<T> wrapper);
}
package com.ruoyi.business.mybatisplus.base;import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import java.util.*;
import java.util.function.Function;/*** 扩展的 Service 实现类* 所有自定义 Service 实现类都需要继承此类** @param <M> Mapper 类型* @param <T> 实体类类型*/
public class BaseServiceImpl <M extends BaseMapperExt<T>, T>extends ServiceImpl<M, T> implements BaseService<T>{/*** 获取表名*/@Overridepublic String getTableName() {TableInfo tableInfo = TableInfoHelper.getTableInfo(this.entityClass);return tableInfo != null ? tableInfo.getTableName() : "";}/*** 查询所有数据*/@Overridepublic List<T> listAll(Wrapper<T> wrapper) {return baseMapper.selectAll(getTableName(), wrapper);}/*** 删除满足条件的所有数据* @param wrapper* @return*/@Overridepublic Integer deleteAll(Wrapper<T> wrapper) {return baseMapper.deleteAll(getTableName(), wrapper);}
}
package com.ruoyi.business.mybatisplus.base;import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;import java.util.List;/*** 通用Mapper扩展接口* @param <T> 实体类型*/
public interface BaseMapperExt<T> extends BaseMapper<T> {/*** 查询所有数据(忽略逻辑删除等自动条件)* @param wrapper 查询条件* @return 数据列表*/@Select("SELECT * FROM ${tableName} ${ew.customSqlSegment}")List<T> selectAll(@Param("tableName") String tableName,@Param(Constants.WRAPPER) Wrapper<T> wrapper);@Delete("DELETE FROM ${tableName} ${ew.customSqlSegment}")Integer deleteAll(@Param("tableName") String tableName,@Param(Constants.WRAPPER) Wrapper<T> wrapper);
}
2.引入方式
public interface IMingmenCommemorate3dService extends BaseService<MingmenCommemorate3d>{}
public class MingmenCommemorate3dServiceImpl extends BaseServiceImpl<MingmenCommemorate3dMapper, MingmenCommemorate3d> implements IMingmenCommemorate3dService{}
public interface MingmenCommemorate3dMapper extends BaseMapperExt<MingmenCommemorate3d>
{}
3.调用
LambdaQueryWrapper<MingmenAlbumImage> wrapperMingmenAlbumImage = Wrappers.lambdaQuery();wrapperMingmenAlbumImage.eq(MingmenAlbumImage::getAlbumId, album.getId());List<MingmenAlbumImage> albumImageList = albumImageService.listAll(wrapperMingmenAlbumImage);albumImageService.deleteAll(wrapperMingmenAlbumImage);