MyBatis-Plus使用(2)-CRUD接口
时间:2019-12-03
本文章向大家介绍MyBatis-Plus使用(2)-CRUD接口,主要包括MyBatis-Plus使用(2)-CRUD接口使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
参考文档:https://mybatis.plus/guide/crud-interface.html
MyBatis-Plus自带的CRUD方法分为Mapper层和Service层,大多数功能是重叠的,本文章只说明Service层CRUD接口
说明:
通用 Service CRUD 封装IService接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,
泛型 T 为任意实体对象
建议如果存在自定义通用 Service 方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类
对象 Wrapper 为 条件构造器
1. 新增方法
1.1 save
/** * 插入一条记录(选择字段,策略插入) * @param entity 实体对象 */ boolean save(T entity);
1.2 saveBatch
/** * 插入(批量) * @param entityList 实体对象集合 */ boolean saveBatch(Collection<T> entityList); /** * 插入(批量) * @param entityList 实体对象集合 * @param batchSize 插入批次数量 */ boolean saveBatch(Collection<T> entityList, int batchSize);
1.3 saveOrUpdate
/** * TableId 注解存在更新记录,否插入一条记录 * @param entity 实体对象 */ boolean saveOrUpdate(T entity);
1.4 saveOrUpdateBatch
/** * 批量修改插入 * @param entityList 实体对象集合 */ boolean saveOrUpdateBatch(Collection<T> entityList); /** * 批量修改插入 * @param entityList 实体对象集合 * @param batchSize 每次的数量 */ boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);
2. 删除方法
2.1 remove
/** * 根据 entity 条件,删除记录 * @param queryWrapper 实体包装类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ boolean remove(Wrapper<T> queryWrapper);
2.2 removeById
/** * 根据 ID 删除 * @param id 主键ID */ boolean removeById(Serializable id);
2.3 removeByIds
/** * 删除(根据ID 批量删除) * @param idList 主键ID列表 */ boolean removeByIds(Collection<? extends Serializable> idList);
2.4 removeByMap
/** * 根据 columnMap 条件,删除记录 * @param columnMap 表字段 map 对象 */ boolean removeByMap(Map<String, Object> columnMap);
3. 修改方法
3.1 update
/** * 根据 whereEntity 条件,更新记录 * @param entity 实体对象 * @param updateWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper} */ boolean update(T entity, Wrapper<T> updateWrapper);
3.2 updateById
/** * 根据 ID 选择修改 * @param entity 实体对象 */ boolean updateById(T entity);
3.3 updateBatchById
/** * 根据ID 批量更新 * @param entityList 实体对象集合 * @param batchSize 更新批次数量 */ boolean updateBatchById(Collection<T> entityList, int batchSize);
4. 查询方法
4.1 getById
/** * 根据 ID 查询 * @param id 主键ID */ T getById(Serializable id);
4.2 getOne
/** * 根据 Wrapper,查询一条记录 * 结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1") * * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ T getOne(Wrapper<T> queryWrapper); /** * 根据 Wrapper,查询一条记录 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} * @param throwEx 有多个 result 是否抛出异常 */ T getOne(Wrapper<T> queryWrapper, boolean throwEx);
4.2 getMap
/** * 根据 Wrapper,查询一条记录,返回Map格式 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ Map<String, Object> getMap(Wrapper<T> queryWrapper);
4.3 getObj
/** * 根据 Wrapper,查询一条记录 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ Object getObj(Wrapper<T> queryWrapper);
4.4 count
/** * 根据 Wrapper 条件,查询总记录数 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ int count(Wrapper<T> queryWrapper);
4.5 list
/** * 查询列表 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ List<T> list(Wrapper<T> queryWrapper);
4.6 listMaps
/** * 查询列表 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper);
4.7 listObjs
/** * 根据 Wrapper 条件,查询全部记录 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ List<Object> listObjs(Wrapper<T> queryWrapper);
4.8 page
/** * 翻页查询 * @param page 翻页对象 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);
4.9 pageMaps
/** * 翻页查询 * @param page 翻页对象 * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);
原文地址:https://www.cnblogs.com/huanshilang/p/11977930.html
- Python之函数的进阶(带参数的装饰器)
- 2017.10.2解题报告
- MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具集成Visual Studio 2013
- 左手用R右手Python系列——百度地图API调用与地址解析/逆解析
- OpenCV实战:人脸关键点检测(FaceMark)
- Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)
- 模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板
- 洛谷P1311 选择客栈
- 洛谷P1607 [USACO09FEB]庙会班车Fair Shuttle
- R语言抓包实战——知乎live二级页面获取
- 左手用R右手Python系列——面向对象编程基础
- 线性同余同余方程组解法(excrt)
- #19. 计数(容斥原理)
- 左手用R右手Python系列——多进程/线程数据抓取与网页请求
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- leetcode栈之比较含退格的字符串
- Discourse 如何不使用 Let’s Encrypt 而使用 CA 签名的密钥进行安装
- 3分钟短文:Laravel slug,让你的url地址更“好记”
- Qt音视频开发28-Onvif信息获取
- CentOS 8 启用 NTP 服务
- Discourse 如何使用命令行方式进行恢复
- CentOS 8 Apache 启用 SSL
- leetcode栈之二叉树的前序遍历
- 前端学数据结构与算法(七): 从零实现优先队列-堆及其应用
- 前端学数据结构与算法(六):二叉树的四种遍历方式及其应用
- 前端学数据结构与算法(五):理解二叉树特性及从零实现二叉搜索树
- 前端学数据结构与算法(四):理解递归及拿力扣链表题目练手
- 前端学数据结构与算法(三):链表为什么能和数组相提并论?用链表实现数组bettle下
- 前端学数据结构与算法(二):数组的操作特性与栈的应用
- 前端学数据结构与算法(一):不会复杂度分析,算法等于白学