1. package com.itheima.dao;
  2.  
  3. import com.baomidou.mybatisplus.core.conditions.Wrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.core.toolkit.Constants;
  6. import org.apache.ibatis.annotations.Param;
  7. import org.apache.ibatis.exceptions.TooManyResultsException;
  8. import org.apache.ibatis.session.RowBounds;
  9.  
  10. import java.io.Serializable;
  11. import java.util.Collection;
  12. import java.util.List;
  13. import java.util.Map;
  14.  
  15. public class baseMapper1 {
  16. /**
  17. * Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能
  18. * 这个 Mapper 支持 id 泛型
  19. */
  20. public interface BaseMapper<T> {
  21.  
  22. /**
  23. * 插入一条记录
  24. *
  25. * @param entity 实体对象: T
  26. * @return int
  27. */
  28. Integer insert(T entity);
  29.  
  30. /**
  31. * 根据 ID 删除
  32. *
  33. * @param id 主键ID
  34. * @return int
  35. */
  36. Integer deleteById(Serializable id);
  37.  
  38. /**
  39. * 根据 columnMap 条件,删除记录
  40. *
  41. * @param columnMap 表字段 map 对象
  42. * @return int
  43. */
  44. Integer deleteByMap(@Param("cm") Map<String, Object> columnMap);
  45.  
  46. /**
  47. * 根据 entity 条件,删除记录
  48. *
  49. * @param querywrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
  50. * @return int
  51. */
  52. //    int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
  53. Integer delete(@Param("ew") Wrapper<T> querywrapper);
  54.  
  55. /**
  56. * 删除(根据ID或实体 批量删除)
  57. *
  58. * @param idList 主键ID列表
  59. *    * @param idList 主键ID列表或者实体类列表(不能为 null 以及 empty)
  60. * @return int
  61. */
  62. //    int deleteBatchIds(@Param(constants.COLLECTION) Collection<?> idList);
  63. //    Integer deleteBatchIds(List<? extends Serializable> idList);
  64. int deleteBatchIds(@Param("coll") Collection<?> idList);
  65.  
  66. /**
  67. * 根据 ID 修改
  68. *
  69. * @param entity 实体对象
  70. * @return int
  71. */
  72. // int updataById(@Param(Constants.ENTITY) T entity);
  73. //    Integer updateById(T entity);
  74. int updateById(@Param("et") T entity);
  75.  
  76. /**
  77. * 根据 whereEntity 条件,更新记录
  78. *
  79. * @param entity 实体对象(set 条件值,可以为null)
  80. * 实体对象
  81. * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
  82. * 实体对象封装操作类(可以为 null)
  83. * @return
  84. */
  85. // Integer update(@Param("et") T entity, @Param("ew") Wrapper<T> wrapper);
  86. int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);
  87.  
  88. /**
  89. * 根据 ID 查询
  90. *
  91. * @param id 主键ID
  92. * @return T
  93. */
  94. T selectById(Serializable id);
  95.  
  96. /**
  97. * 查询(根据ID 批量查询)
  98. *
  99. * @param idList 主键ID列表(不能为 null 以及 empty)
  100. * 主键ID列表
  101. * @return List<T>
  102. */
  103. // List<T> selectBatchIds(List<? extends Serializable> idList);
  104. List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);
  105.  
  106. /**
  107. * 查询(根据 columnMap 条件)
  108. *
  109. * @param columnMap 表字段 map 对象
  110. * @return List<T>
  111. */
  112. List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
  113.  
  114. /**
  115. * 根据 entity 条件,查询一条记录,查询一条记录,例如 qw.last(“limit 1”)限制取一条记录,注意:多条数据会报异常。
  116. *
  117. * @param entity 实体对象
  118. * @param queryWrapper 实体对象封装操作类(可以为null)
  119. * @return T
  120. */
  121. // T selectOne(@Param("ew") T entity); //完整如下
  122. default T selectOne(@Param("ew") Wrapper<T> queryWrapper) {
  123. List<T> list = this.selectList(queryWrapper);
  124. if (list.size() == 1) {
  125. return list.get(0);
  126. } else if (list.size() > 1) {
  127. throw new TooManyResultsException("Expected one result (or null) to be returned by selectOne(), but found: " + list.size());
  128. } else {
  129. return null;
  130. }
  131. }
  132.  
  133. /**
  134. * exists 存在(参数构造器)
  135. * 根据 Wrapper 条件,判断是否存在记录
  136. *
  137. * @param queryWrapper 实体对象封装操作类
  138. * @return {@link boolean}
  139. **/
  140. default boolean exists(Wrapper<T> queryWrapper) {
  141. Long count = this.selectCount(queryWrapper);
  142. return null != count && count > 0L;
  143. }
  144.  
  145. /**
  146. * 根据 Wrapper 条件构造器,查询总记录数
  147. *
  148. * @param queryWrapper 实体对象封装操作类(可以为 null)
  149. * 实体对象
  150. * @return int
  151. */
  152. // Long selectCount(@Param("Constants.WRAPPER") Wrapper<T> wrapper);
  153. Long selectCount(@Param("ew") Wrapper<T> queryWrapper);
  154.  
  155. /**
  156. * 根据 Wrapper<T> queryWrapper 条件构造器,查询全部记录
  157. *
  158. * @param queryWrapper 实体对象封装操作类(可以为 null)
  159. * @return List<T>
  160. */
  161. List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);
  162.  
  163. /**
  164. * 根据 Wrapper 条件,查询全部记录
  165. *
  166. * @param queryWrapper 实体对象封装操作类(可以为 null)
  167. * @return List<T>
  168. */
  169. List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);
  170.  
  171. /**
  172. * 根据 Wrapper<T> queryWrapper 条件构造器,查询全部记录
  173. *
  174. * @param queryWrapper 实体对象封装操作类(可以为 null)
  175. * @return List<Object>
  176. */
  177. List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);
  178.  
  179. /**
  180. * 根据 entity 条件,查询全部记录(并翻页)
  181. *
  182. * @param page 分页查询条件(可以为 RowBounds.DEFAULT)
  183. * @param queryWrapper 实体对象封装操作类(可以为 null)
  184. * @return List<T>
  185. */
  186. <P extends IPage<T>> P selectPage(P page, @Param("ew") Wrapper<T> queryWrapper);
  187.  
  188. /**
  189. * 根据 Wrapper 条件,查询全部记录(并翻页)
  190. *
  191. * @param page 分页查询条件(可以为 RowBounds.DEFAULT)
  192. * @param queryWrapper 实体对象封装操作类
  193. * @return List<Map < String, Object>>
  194. */
  195. // List<Map<String, Object>> selectMapsPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper); }
  196. <P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param("ew") Wrapper<T> queryWrapper);
  197. }
  198. }

增删改查的应用:

Mybatis-Plus 之BaseMapper 方法详解的更多相关文章

  1. MP实战系列(十一)之封装方法详解(续一)

    之前写的封装方法详解,比较简要. 今天我主要讲增加和删除及其修改.查的话得单独再详讲. 增删改查,无论是Java或者C#等等,凡是对数据库操作的都离不开这四个. 一.增加方法讲解 MyBatis Pl ...

  2. MP实战系列(十二)之封装方法详解(续二)

    继续MP实战系列(十一)之封装方法详解(续一)这篇文章之后. 此次要讲的是关于查询. 查询是用的比较多的,查询很重要,好的查询,加上索引如鱼得水,不好的查询加再多索引也是无济于事. 1.selectB ...

  3. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)

    通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...

  4. 《深入理解mybatis原理6》 MyBatis的一级缓存实现详解 及使用注意事项

    <深入理解mybatis原理> MyBatis的一级缓存实现详解 及使用注意事项 0.写在前面   MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓 ...

  5. [转载]Mybatis Generator最完整配置详解

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  6. session的使用方法详解

    session的使用方法详解 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器 ...

  7. Kooboo CMS - Html.FrontHtml[Helper.cs] 各个方法详解

    下面罗列了方法详解,每一个方法一篇文章. Kooboo CMS - @Html.FrontHtml().HtmlTitle() 详解 Kooboo CMS - Html.FrontHtml.Posit ...

  8. HTTP请求方法详解

    HTTP请求方法详解 请求方法:指定了客户端想对指定的资源/服务器作何种操作 下面我们介绍HTTP/1.1中可用的请求方法: [GET:获取资源]     GET方法用来请求已被URI识别的资源.指定 ...

  9. ecshop后台增加|添加商店设置选项和使用方法详解

    有时候我们想在Ecshop后台做个设置.radio.checkbox 等等来控制页面的显示,看看Ecshop的设计,用到了shop_config这个商店设置功能 Ecshop后台增加|添加商店设置选项 ...

  10. (转)Spring JdbcTemplate 方法详解

    Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...

随机推荐

  1. windows 、linux文件互传-FileZilla

    1.下载免安装FileZilla并解压 2.打开.exe文件 3.点击左上角的文件->站点管理 4.点击新站点->进行配置相应的服务地址信息 5.连接上服务后,若需要将windows中的文 ...

  2. 5、基于EasyExcel的导入导出

    一.Apach POI处理Excel的方式: 传统Excel操作或者解析都是利用Apach POI进行操作,POI中处理Excel有以下几种方式: 1.HSSFWorkbook: HSSFWorkbo ...

  3. day12-功能实现11

    家居网购项目实现011 以下皆为部分代码,详见 https://github.com/liyuelian/furniture_mall.git 27.功能25-事务管理 27.1下订单问题思考 在生成 ...

  4. python进阶之路4基本运算符、格式化输出

    内容回顾 PEP8规范 代码编写规范及美观 python注释语法 平时养成写注释的习惯 1.警号 2.三个单引号 3.三个双引号 常量与变量 1.变量语法结构 变量名 赋值符合 数据值 2.底层原理 ...

  5. 聊聊MongoDB中连接池、索引、事务

    大家好,我是哪吒. 三分钟你将学会: MongoDB连接池的使用方式与常用参数 查询五步走,能活九十九? MongoDB索引与MySQL索引有何异同? MongoDB事务与ACID 什么是聚合框架? ...

  6. 题解CF893C Rumor

    思路 竟然朋友之间可以传递故事,那么,我们设两两有间接或直接的朋友关系的为一个友好集合,那么我们只要每一个友好集合买一次就好了. 那应该怎么买呢?由于题面让我们求的是[最少的价钱],那我们可以考虑每一 ...

  7. 微信小程序技巧-让特定组件首页始终展示修改编译条件即可,不用改json

  8. ES中的内置对象--jquery如何优化代码,少用$进行查找,减少查找次数的方法

  9. Redis - 介绍与使用场景

    简介 Redis 的全称是 Remote Dictionary Server,是一个使用 C 语言编写的.开源的(BSD 许可)高性能非关系型(NoSQL)的键值对数据库. Redis 的数据是存储在 ...

  10. java入门与进阶-P1.1+P1.2

    计算机与编程语言 计算机如何解决问题 !-- 首先计算机他是不知道自己需要去做什么的,它需要按照你所说的步骤一步一步进行直到结束 "请给我一杯水" 1.转身走到厨房; 2.找到一个 ...