package com.fastbee.framework.mybatis.mapper;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
import com.baomidou.mybatisplus.extension.toolkit.Db;
|
import com.fastbee.common.core.domain.PageParam;
|
import com.fastbee.common.core.domain.PageResult;
|
import com.fastbee.framework.mybatis.utils.MyBatisUtils;
|
import org.apache.ibatis.annotations.Param;
|
|
import java.util.Collection;
|
import java.util.List;
|
|
/**
|
* 在 MyBatis Plus 的 BaseMapper 的基础上拓展,提供更多的能力
|
* <p>
|
* 为什么继承 MPJBaseMapper 接口?支持 MyBatis Plus 多表 Join 的能力。
|
*/
|
public interface BaseMapperX<T> extends BaseMapper<T> {
|
|
default PageResult<T> selectPage(PageParam pageParam, @Param("ew") Wrapper<T> queryWrapper) {
|
// MyBatis Plus 查询
|
IPage<T> mpPage = MyBatisUtils.buildPage(pageParam);
|
selectPage(mpPage, queryWrapper);
|
// 转换返回
|
return new PageResult<>(mpPage.getRecords(), mpPage.getTotal());
|
}
|
|
default T selectOne(String field, Object value) {
|
return selectOne(new QueryWrapper<T>().eq(field, value));
|
}
|
|
default T selectOne(SFunction<T, ?> field, Object value) {
|
return selectOne(new LambdaQueryWrapper<T>().eq(field, value));
|
}
|
|
default T selectOne(String field1, Object value1, String field2, Object value2) {
|
return selectOne(new QueryWrapper<T>().eq(field1, value1).eq(field2, value2));
|
}
|
|
default T selectOne(SFunction<T, ?> field1, Object value1, SFunction<T, ?> field2, Object value2) {
|
return selectOne(new LambdaQueryWrapper<T>().eq(field1, value1).eq(field2, value2));
|
}
|
|
default Long selectCount() {
|
return selectCount(new QueryWrapper<T>());
|
}
|
|
default Long selectCount(String field, Object value) {
|
return selectCount(new QueryWrapper<T>().eq(field, value));
|
}
|
|
default Long selectCount(SFunction<T, ?> field, Object value) {
|
return selectCount(new LambdaQueryWrapper<T>().eq(field, value));
|
}
|
|
default List<T> selectList() {
|
return selectList(new QueryWrapper<>());
|
}
|
|
default List<T> selectList(String field, Object value) {
|
return selectList(new QueryWrapper<T>().eq(field, value));
|
}
|
|
default List<T> selectList(SFunction<T, ?> field, Object value) {
|
return selectList(new LambdaQueryWrapper<T>().eq(field, value));
|
}
|
|
default List<T> selectList(String field, Collection<?> values) {
|
return selectList(new QueryWrapper<T>().in(field, values));
|
}
|
|
default List<T> selectList(SFunction<T, ?> field, Collection<?> values) {
|
return selectList(new LambdaQueryWrapper<T>().in(field, values));
|
}
|
|
default List<T> selectList(SFunction<T, ?> leField, SFunction<T, ?> geField, Object value) {
|
return selectList(new LambdaQueryWrapper<T>().le(leField, value).ge(geField, value));
|
}
|
|
/**
|
* 批量插入,适合大量数据插入
|
*
|
* @param entities 实体们
|
*/
|
default void insertBatch(Collection<T> entities) {
|
Db.saveBatch(entities);
|
}
|
|
/**
|
* 批量插入,适合大量数据插入
|
*
|
* @param entities 实体们
|
* @param size 插入数量 Db.saveBatch 默认为 1000
|
*/
|
default void insertBatch(Collection<T> entities, int size) {
|
Db.saveBatch(entities, size);
|
}
|
|
default void updateBatch(T update) {
|
update(update, new QueryWrapper<>());
|
}
|
|
default void updateBatch(Collection<T> entities, int size) {
|
Db.updateBatchById(entities, size);
|
}
|
|
}
|