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 的基础上拓展,提供更多的能力 *

* 为什么继承 MPJBaseMapper 接口?支持 MyBatis Plus 多表 Join 的能力。 */ public interface BaseMapperX extends BaseMapper { default PageResult selectPage(PageParam pageParam, @Param("ew") Wrapper queryWrapper) { // MyBatis Plus 查询 IPage 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().eq(field, value)); } default T selectOne(SFunction field, Object value) { return selectOne(new LambdaQueryWrapper().eq(field, value)); } default T selectOne(String field1, Object value1, String field2, Object value2) { return selectOne(new QueryWrapper().eq(field1, value1).eq(field2, value2)); } default T selectOne(SFunction field1, Object value1, SFunction field2, Object value2) { return selectOne(new LambdaQueryWrapper().eq(field1, value1).eq(field2, value2)); } default Long selectCount() { return selectCount(new QueryWrapper()); } default Long selectCount(String field, Object value) { return selectCount(new QueryWrapper().eq(field, value)); } default Long selectCount(SFunction field, Object value) { return selectCount(new LambdaQueryWrapper().eq(field, value)); } default List selectList() { return selectList(new QueryWrapper<>()); } default List selectList(String field, Object value) { return selectList(new QueryWrapper().eq(field, value)); } default List selectList(SFunction field, Object value) { return selectList(new LambdaQueryWrapper().eq(field, value)); } default List selectList(String field, Collection values) { return selectList(new QueryWrapper().in(field, values)); } default List selectList(SFunction field, Collection values) { return selectList(new LambdaQueryWrapper().in(field, values)); } default List selectList(SFunction leField, SFunction geField, Object value) { return selectList(new LambdaQueryWrapper().le(leField, value).ge(geField, value)); } /** * 批量插入,适合大量数据插入 * * @param entities 实体们 */ default void insertBatch(Collection entities) { Db.saveBatch(entities); } /** * 批量插入,适合大量数据插入 * * @param entities 实体们 * @param size 插入数量 Db.saveBatch 默认为 1000 */ default void insertBatch(Collection entities, int size) { Db.saveBatch(entities, size); } default void updateBatch(T update) { update(update, new QueryWrapper<>()); } default void updateBatch(Collection entities, int size) { Db.updateBatchById(entities, size); } }