当前位置: 首页 > news >正文

第09章 MyBatisPlus实现查询功能

序言

1.内容介绍

​ 本章介绍了查询API的核心语法实现,分别针对于单条以及多条信息的查询进行了一 一语法描述,同时采用实战演练的方式依次演示了根据ID查询用户信息、实现账户登录操作以及多参数查询等实战案例。

2.理论目标

  • 掌握基于Get方式查询的常用API
  • 掌握基于List方式查询的常用API
  • 掌握原生SQL方式查询的常用API

3.实践目标

  • 能熟练使用Get方式完成单条记录的检索业务
  • 能熟练使用List方式完成多条记录的检索业务
  • 能熟练使用原生sql方式,进行复杂业务的检索

4.实践案例

  • 根据ID查询单个用户信息
  • 账户登录授权操作
  • 多参数查询操作

5.内容目录

  • 1.查询API概述
  • 2.查询实战(一)
  • 3.查询实战(二)

第1节 查询API概述

1. 单条信息查询API

描述方法返回类型
根据ID查询getById(Serializable id);T
根据 Wrapper,查询一条记录。
结果集,如果是多个会抛出异常,
随机取一条加上限制条件 wrapper.last(“LIMIT 1”)
getOne(Wrapper queryWrapper);T
根据 Wrapper,查询一条记录getOne(Wrapper queryWrapper, boolean throwEx);T
根据 Wrapper,查询一条记录getMap(Wrapper queryWrapper);Map<String, Object>
根据 Wrapper,查询一条记录getObj(Wrapper queryWrapper, Function<? super Object, V> mapper);V

参数说明

类型参数名描述
Serializableid主键ID
WrapperqueryWrapper实体对象封装操作类QueryWrapper
booleanthrowEx有多个result是否抛出异常
Tentity实体对象
Functin<? super Object,V>mapper转换函数

2. 多条信息查询API

描述方法返回类型
查询所有list();List
查询列表list(Wrapper queryWrapper);List
查询(根据ID 批量查询)listByIds(Collection<? extends Serializable> idList);Collection
查询(根据 columnMap 条件)listByMap(Map<String, Object> columnMap);Collection
查询所有列表listMaps();List<Map<String, Object>>
查询列表listMaps(Wrapper queryWrapper);List<Map<String, Object>>
查询全部记录listObjs();List
根据 Wrapper 条件,查询全部记录listObjs(Wrapper queryWrapper);List

参数说明

类型参数名描述
WrapperqueryWrapper实体对象封装操作类 QueryWrapper
Collection<? extends Serializable>idList主键ID列表
Map<String, Object>columnMap表字段 map 对象

第2节 查询实战(一)

1. 根据ID查询

1.1 IUserService.java

 

//根据ID查询用户信 User queryById(int id);

1.2 UserServiceImpl.java

 

@Override public User queryById(int id) { User user = this.baseMapper.selectById(id); return user; }

1.3 编写UserController.java

 

//根据id查询用户信息 @RequestMapping("/query/{id}") public String queryById(@PathVariable int id){ //根据id查询对象 User user =userService.queryById(id); //返回json return JSON.toJSONString(user); }

1.4 执行,观察效果

2. 实现账户登录

2.1 编写IUserService.java

 

//实现登录 User queryByAccount(String email,String pwd);

2.2 编写UserServiceImpl.java

 

@Override public User queryByAccount(String email, String pwd) { //封装查询参数 QueryWrapper<User> wrapper = new QueryWrapper<User>(); wrapper.eq("email",email); wrapper.eq("pwd",pwd); //执行查询 User user =getOne(wrapper); return user; }

2.3 编写UserController.java

 

//实现用户登录 @RequestMapping(value="/login",method = RequestMethod.POST) public String login(String email,String pwd){ //执行的返回结果 Map<String,Object> map = new HashMap<String,Object>(); try{ User user =userService.queryByAccount(email,pwd); if(user!=null){ map.put("status",200); map.put("data",user); }else{ map.put("status",-1); map.put("message","账号或密码错误!"); } }catch (Exception ex){ map.put("status","500");//执行出现异常 map.put("message","异常信息:"+ex.getMessage()); } return JSON.toJSONString(map); }

2.4 执行,观察效果

开始实验

第3节 查询实战(二)

1. 实现多参数查询

1.1 编写IUserService.java

 

//多参数查询 List<User> queryByArgs(int minAge,int maxAge,int beginId);

1.2 编写UserServiceImpl.java

 

/** * 查询 > beginId,且 年龄在[minAge,maxAge] 区间的用户 * @param minAge * @param maxAge * @param beginId * @return */ @Override public List<User> queryByArgs(int minAge, int maxAge, int beginId) { //封装查询参数 QueryWrapper<User> wrapper = new QueryWrapper<User>(); wrapper.gt("id",beginId); wrapper.between("age",minAge,maxAge); //执行查询 List<User> userList = list(wrapper); return userList; }

1.3 编写UserController.java

 

//多参数用户信息查询 @RequestMapping(value="/query",method = RequestMethod.GET) public String queryUsers(){ //执行的返回结果 Map<String,Object> map = new HashMap<String,Object>(); try{ List<User> userList =userService.queryByArgs(21,37,4); if(userList!=null&&userList.size()>0){ map.put("status",200); map.put("data",userList); }else{ map.put("status",-1); map.put("message","没有检索到相关数据!"); } }catch (Exception ex){ map.put("status","500");//执行出现异常 map.put("message","异常信息:"+ex.getMessage()); } return JSON.toJSONString(map); }

1.4 执行,观察效果

2. 实现原生SQL查询

需求说明

  • 采用原生sql方式检索id号>2,年龄在【21,37】之间的用户信息

2.1 编写UserMapper.java

 

@Select("${sql}") List<User> queryByCondition(@Param("sql") String sql);

2.2 编写IUserService.java

 

//原生SQL查询 List<User> queryByArgs(String sql);

2.3 编写UserServiceImpl.java

 

@Override public List<User> queryByArgs2(int minAge, int maxAge, int beginId) { //封装查询参数 String sql="select id,name,age,email,pwd from user where id>"+beginId+" and age between "+minAge+" and "+maxAge; //执行查询 List<User> userList=this.userMapper.queryByCondition(sql); return userList; }

2.4 编写UserController.java

 

//多参数用户信息查询 @RequestMapping(value="/query",method = RequestMethod.GET) public String queryUsers(){ //执行的返回结果 Map<String,Object> map = new HashMap<String,Object>(); try{ List<User> userList =userService.queryByArgs2(21,37,4); if(userList!=null&&userList.size()>0){ map.put("status",200); map.put("data",userList); }else{ map.put("status",-1); map.put("message","没有检索到相关数据!"); } }catch (Exception ex){ map.put("status","500");//执行出现异常 map.put("message","异常信息:"+ex.getMessage()); } return JSON.toJSONString(map); }

2.5 执行,观察效果

开始实验

相关文章:

  • 第06章 MyBatisPlus概述
  • C语言-结构体
  • GlusterFS基本概念
  • Java 键盘输入n个数进行排序输出
  • Vue.js核心技术解析与uni-app跨平台实战开发学习笔记 第10章 Vuex状态管理 10.7 Vuex实例之登录退出
  • SpringBoot基础篇 (2)— REST讲解
  • 一次JAVA频繁写大文件的记录
  • 第16章大数据定制篇-Shell编程
  • 【Push Kit】推送返回80100016错误
  • 《三叶虫与其他故事》我的恐惧如涟漪扩散,荡漾过百万年的时光
  • 阿里云maven仓库地址
  • 【ENOVIA】MBOM经理概述 | 达索系统百世慧®
  • Gradle使用教程
  • 3dmax的Corona的渲染器材质要如何完全转换VRay材质?
  • 创建型模式-建造者模式(四)
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 0x05 Python数据分析,Anaconda八斩刀
  • 4个实用的微服务测试策略
  • CEF与代理
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • miaov-React 最佳入门
  • python_bomb----数据类型总结
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • V4L2视频输入框架概述
  • windows下如何用phpstorm同步测试服务器
  • 不上全站https的网站你们就等着被恶心死吧
  • 飞驰在Mesos的涡轮引擎上
  • 基于web的全景—— Pannellum小试
  • 实现菜单下拉伸展折叠效果demo
  • 试着探索高并发下的系统架构面貌
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 一个项目push到多个远程Git仓库
  • 06-01 点餐小程序前台界面搭建
  • mysql面试题分组并合并列
  • ​比特币大跌的 2 个原因
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #Linux(帮助手册)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (3)STL算法之搜索
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)ssm高校实验室 毕业设计 800008
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转)视频码率,帧率和分辨率的联系与区别
  • .naturalWidth 和naturalHeight属性,
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net framework4与其client profile版本的区别
  • .Net IOC框架入门之一 Unity
  • .Net7 环境安装配置
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET中winform传递参数至Url并获得返回值或文件