• 第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
    根据 Wrapper,查询一条记录getObj(Wrapper queryWrapper, Function mapper);V

    参数说明

    类型参数名描述
    Serializableid主键ID
    WrapperqueryWrapper实体对象封装操作类QueryWrapper
    booleanthrowEx有多个result是否抛出异常
    Tentity实体对象
    Functinmapper转换函数

    2. 多条信息查询API

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

    参数说明

    类型参数名描述
    WrapperqueryWrapper实体对象封装操作类 QueryWrapper
    CollectionidList主键ID列表
    MapcolumnMap表字段 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 wrapper = new QueryWrapper(); 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 map = new HashMap(); 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 queryByArgs(int minAge,int maxAge,int beginId);

    1.2 编写UserServiceImpl.java

     
    

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

    1.3 编写UserController.java

     
    

    //多参数用户信息查询 @RequestMapping(value="/query",method = RequestMethod.GET) public String queryUsers(){ //执行的返回结果 Map map = new HashMap(); try{ List 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 queryByCondition(@Param("sql") String sql);

    2.2 编写IUserService.java

     
    

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

    2.3 编写UserServiceImpl.java

     
    

    @Override public List 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 userList=this.userMapper.queryByCondition(sql); return userList; }

    2.4 编写UserController.java

     
    

    //多参数用户信息查询 @RequestMapping(value="/query",method = RequestMethod.GET) public String queryUsers(){ //执行的返回结果 Map map = new HashMap(); try{ List 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 执行,观察效果

    开始实验

  • 相关阅读:
    有大量虾皮买家号想防关联该怎么做?
    Qt如何在视频画面上新增车道线显示
    红日靶场复现1
    37. 干货系列从零用Rust编写负载均衡及代理,负载均衡中try_files实现
    数据结构-ArrayList解析和实现代码
    Python selenium模块的安装使用
    80篇国产数据库实操文档汇总(含TiDB、达梦、openGauss等)
    1600*C. Good Subarrays(找规律&&前缀和)
    在浏览器页面提交信息和上传文件
    数据持久化技术(Python)的使用
  • 原文地址:https://blog.csdn.net/a1234556667/article/details/126447113