package com.itheima.dao;

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 org.apache.ibatis.exceptions.TooManyResultsException;
import org.apache.ibatis.session.RowBounds; import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map; public class baseMapper1 {
/**
* Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能
* 这个 Mapper 支持 id 泛型
*/
public interface BaseMapper<T> { /**
* 插入一条记录
*
* @param entity 实体对象: T
* @return int
*/
Integer insert(T entity); /**
* 根据 ID 删除
*
* @param id 主键ID
* @return int
*/
Integer deleteById(Serializable id); /**
* 根据 columnMap 条件,删除记录
*
* @param columnMap 表字段 map 对象
* @return int
*/
Integer deleteByMap(@Param("cm") Map<String, Object> columnMap); /**
* 根据 entity 条件,删除记录
*
* @param querywrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
* @return int
*/
//    int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
Integer delete(@Param("ew") Wrapper<T> querywrapper); /**
* 删除(根据ID或实体 批量删除)
*
* @param idList 主键ID列表
*    * @param idList 主键ID列表或者实体类列表(不能为 null 以及 empty)
* @return int
*/
//    int deleteBatchIds(@Param(constants.COLLECTION) Collection<?> idList);
//    Integer deleteBatchIds(List<? extends Serializable> idList);
int deleteBatchIds(@Param("coll") Collection<?> idList); /**
* 根据 ID 修改
*
* @param entity 实体对象
* @return int
*/
// int updataById(@Param(Constants.ENTITY) T entity);
//    Integer updateById(T entity);
int updateById(@Param("et") T entity); /**
* 根据 whereEntity 条件,更新记录
*
* @param entity 实体对象(set 条件值,可以为null)
* 实体对象
* @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
* 实体对象封装操作类(可以为 null)
* @return
*/
// Integer update(@Param("et") T entity, @Param("ew") Wrapper<T> wrapper);
int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper); /**
* 根据 ID 查询
*
* @param id 主键ID
* @return T
*/
T selectById(Serializable id); /**
* 查询(根据ID 批量查询)
*
* @param idList 主键ID列表(不能为 null 以及 empty)
* 主键ID列表
* @return List<T>
*/
// List<T> selectBatchIds(List<? extends Serializable> idList);
List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList); /**
* 查询(根据 columnMap 条件)
*
* @param columnMap 表字段 map 对象
* @return List<T>
*/
List<T> selectByMap(@Param("cm") Map<String, Object> columnMap); /**
* 根据 entity 条件,查询一条记录,查询一条记录,例如 qw.last(“limit 1”)限制取一条记录,注意:多条数据会报异常。
*
* @param entity 实体对象
* @param queryWrapper 实体对象封装操作类(可以为null)
* @return T
*/
// T selectOne(@Param("ew") T entity); //完整如下
default T selectOne(@Param("ew") Wrapper<T> queryWrapper) {
List<T> list = this.selectList(queryWrapper);
if (list.size() == 1) {
return list.get(0);
} else if (list.size() > 1) {
throw new TooManyResultsException("Expected one result (or null) to be returned by selectOne(), but found: " + list.size());
} else {
return null;
}
} /**
* exists 存在(参数构造器)
* 根据 Wrapper 条件,判断是否存在记录
*
* @param queryWrapper 实体对象封装操作类
* @return {@link boolean}
**/
default boolean exists(Wrapper<T> queryWrapper) {
Long count = this.selectCount(queryWrapper);
return null != count && count > 0L;
} /**
* 根据 Wrapper 条件构造器,查询总记录数
*
* @param queryWrapper 实体对象封装操作类(可以为 null)
* 实体对象
* @return int
*/
// Long selectCount(@Param("Constants.WRAPPER") Wrapper<T> wrapper);
Long selectCount(@Param("ew") Wrapper<T> queryWrapper); /**
* 根据 Wrapper<T> queryWrapper 条件构造器,查询全部记录
*
* @param queryWrapper 实体对象封装操作类(可以为 null)
* @return List<T>
*/
List<T> selectList(@Param("ew") Wrapper<T> queryWrapper); /**
* 根据 Wrapper 条件,查询全部记录
*
* @param queryWrapper 实体对象封装操作类(可以为 null)
* @return List<T>
*/
List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper); /**
* 根据 Wrapper<T> queryWrapper 条件构造器,查询全部记录
*
* @param queryWrapper 实体对象封装操作类(可以为 null)
* @return List<Object>
*/
List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper); /**
* 根据 entity 条件,查询全部记录(并翻页)
*
* @param page 分页查询条件(可以为 RowBounds.DEFAULT)
* @param queryWrapper 实体对象封装操作类(可以为 null)
* @return List<T>
*/
<P extends IPage<T>> P selectPage(P page, @Param("ew") Wrapper<T> queryWrapper); /**
* 根据 Wrapper 条件,查询全部记录(并翻页)
*
* @param page 分页查询条件(可以为 RowBounds.DEFAULT)
* @param queryWrapper 实体对象封装操作类
* @return List<Map < String, Object>>
*/
// List<Map<String, Object>> selectMapsPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper); }
<P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param("ew") Wrapper<T> queryWrapper);
}
}

增删改查的应用:

最新文章

  1. python之最强王者(10)———文件(File)、输入输出的基本操作
  2. Ubuntu14.10搭建C++开发环境
  3. LNMP源码编译安装(centos7+nginx1.9+mysql5.6+php7)
  4. 给inpu加背景图,input内容又不能盖着背景图
  5. JavaScript深入浅出2-表达式和运算符
  6. 彩色照片转换为黑白照片(Color image converted to black and white picture)
  7. hibernate.cfg.xml讲解
  8. 二模09day1解题报告
  9. 优化sql,返回行数少情况下,NL比hash快好多
  10. Java 设计模式_复合模式(2016-08-31)
  11. Spark SQL &#160;inferSchema实现原理探微(Python)
  12. Codeforces 301_div.2_Ice Cave(BFS走冰块)
  13. PE基金的运作模式有哪些?
  14. Scala基础类型与操作
  15. Maven pom项目部署
  16. iOS面试题最全梳理
  17. MathUtils
  18. jsoup.parse 的一个坑
  19. vue.js实战——$event
  20. 51Nod - 1228 序列求和 (自然数幂和+伯努利数)

热门文章

  1. uniapp中封装一个弹框组件
  2. jdk调度任务线程池ScheduledThreadPoolExecutor工作原理解析
  3. JavaScript:代码细节和良好编码习惯
  4. 11、ON DUPLICATE KEY UPDATE实现插入更新操作
  5. 【转载】EXCEL VBA 选取非连续的单元格区域——Areas集合
  6. 初识argparse 模块
  7. 工业数据分析为什么要用FusionInsight MRS IoTDB?
  8. 微服务框架——SpringBoot
  9. MAC 安装homebrew最好的办法哦~~
  10. 五种传统IO模型