package cn.iocoder.yudao.framework.mybatis.core.mapper; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
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 org.apache.ibatis.annotations.Param; import java.util.Collection;
import java.util.List; /**
* 在 MyBatis Plus 的 BaseMapper 的基础上拓展,提供更多的能力
*/
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);
} }

BaseMapperX的更多相关文章

随机推荐

  1. plsql--游标用法

    1.游标概念 在 PL/SQL 块中执行 SELECT.INSERT.DELETE 和 UPDATE 语句时,ORACLE 会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向 ...

  2. 如何用calibredrv 来merge多个cell的gds

    1. 两个cell合并到一个gds calibredrv -shell layout filemerge -in A.gds -in B.gds -out  AB.gds -createtop AB_ ...

  3. 射频识别技术(RFID)

    概述: 无线射频识别即射频识别技术(Radio Frequency Identification,RFID),是自动识别技术的一种,通过无线射频方式进行非接触双向数据通信,利用无线射频方式对记录媒体( ...

  4. 127. Word Ladder via java

    A classic BFS problem, that is, we use a Queue to store temporary solution and record the size of th ...

  5. meta标签整理大全

    一.H5标准声明,使用 HTML5 doctype,不区分大小写 <!DOCTYPE html> 二. 标准的 lang 属性写法 <head lang="en" ...

  6. Python基础数据类型-list(列表)

    a = [1, 2, 3] a.append([1, 4]) a.append(8) a.append([8, 9, '10']) # 添加的是整体,即:将输入对象添加到列表末尾 print(a) # ...

  7. IE8兼容的零零碎碎

    css部分 1 nth-of-type选择器 2 span:nth-of-type(1) 3 /*IE8兼容写法*/ 4 span:first-child /*选中第一个*/ 5 span:first ...

  8. css中双冒号和单冒号区别

    :--是指的伪类 ::--是指的伪元素 1.字面意思: 伪类,1.css中有类选择器,某些元素并未定义类名,就可以通过伪类赋予样式,如:[:nth-child(n)]:2.伪类可以应用于元素执行某种状 ...

  9. go结构体打印格式化成json

    需要用到json.MarshalIndent 方法 官方的注释是: MarshalIndent类似于Marshal,但应用Indent来格式化输出. 输出中的每个JSON元素都将以一个新行开始,该新行 ...

  10. 【Android异常】关于静态注册BroadcastReceiver接收不到系统广播的问题

    如果你静态注册的广播无法接收到消息,请先检查下:你的安卓版本是不是8.0+ 前言Google官方声明:Beginning with Android 8.0 (API level 26), the sy ...