使用mybatis-plus实现使用一个方法完成管理端列表界面数据查询功能

采用技术:vue+springboot+mybatis-plus

基本环境配置就不说了,直接上核心代码

前端查询框

在这里插入图片描述

当我们一开始加载页面的时候搜索的条件是空的此时直接向后端传输空值即可

前端传输格式

 getCount() {
                    //根据token来进行获取数据
                    const token = window.localStorage.getItem("Authorization");
                    // "http://localhost/yueyou-admin/user/search"
                    //通过get方法获取数据
                    this.$http.get("http://localhost:8084/user/search", {
                        // headers: {
                        //     "Authorization": token
                        // },
                        params: {
                            "startDate": this.date[0],//开始时间
                            "endDate": this.date[1],//结束时间
                            "sex": this.sex,//性别
                            "telephone": this.telephone,//手机号
                            "nikeName": this.nikeName,//用户昵称
                            "pageNum": this.currenPage,//页码
                            "pageSize": this.pageSize//每页大小
                        }
					//下面部分是打印数据
                    }).then((response) => {
                        let result = response.data;
                        if (result.data.list.length > 0) {
                            //存在数据
                            this.tableData = result.data.list;
                            this.currenPage = result.data.pageNum;
                            this.total = result.data.total;
                            this.pages = result.data.pages;

                        } else {
                            this.tableData = [];
                            this.currenPage = 0;
                            this.total = 0;
                            this.pages = 0;
                        }

                    }).catch((error) => {
                        this.$message({
                            message: '网络错误!',
                            type: 'warning'
                        });
                    });

根据自己的需要进行跨域处理和token校验在这里我就不展示了

为了能更好的展示数据接下来我将用json格式来显示返回的数据
在网站地址输入传输的url地址和信息,第一次加载界面的时候只需要页码和每页大小
在这里插入图片描述
返回数据

在这里插入图片描述

那我们加入其他查询条件会如何呢
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到输入条件存在时才进行该条件的查询不存在就不查询,接下来我们来看看后端是如何实现的

后端代码

controller层就是简单的接收数据在这我也不展示了,直接到service层的业务处理部分

package com.leach.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.leach.dao.UserMapper;
import com.leach.domain.User;
import com.leach.domain.UserSearch;
import com.leach.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public PageInfo<User> getUser(UserSearch userSearch) throws ParseException {
        //分页
        PageHelper.startPage(userSearch.getPageNum(),userSearch.getPageSize());
        //条件构造器
        QueryWrapper queryWrapper = new QueryWrapper();
        //Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2005-06-09"); 将String转为事件类型
        //创建一个map
        int index = 0;
        HashMap<String,Object> map = new HashMap<>();
        //判断条件不为空就放入map
        if(!userSearch.getSex().equals("")){
            map.put("sex",userSearch.getSex());
            index++;
        }
        if(!userSearch.getTelephone().equals("")){
            map.put("telephone",userSearch.getTelephone());
            index++;
        }
        if(!userSearch.getNikeName().equals("")){
            map.put("nike_name",userSearch.getNikeName());
            index++;
        }
        //当map有值就放到条件构造器中
        if(index>0){
            queryWrapper.allEq(map);
        }
        /*获取在这期间生日的user*/
        if(!userSearch.getStartDate().equals("")&&!userSearch.getEndDate().equals("")){
            queryWrapper.between("birthday",new SimpleDateFormat("yyyy-MM-dd").parse(userSearch.getStartDate()),
                    new SimpleDateFormat("yyyy-MM-dd").parse(userSearch.getEndDate()));
        }
        ArrayList<User> list = (ArrayList<User>) userMapper.selectList(queryWrapper);
        PageInfo<User> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }
}

由于本人前端不是很擅长不知道如何将传递的值设置为null有解答的可以评论教育我哈哈哈哈哈
个人感觉mybatis-plus可以帮助减少很多代码但是跟sql语句又更加揉在一起了,在大型项目中可能会导致维护难度增加所以使用需考虑考虑

自此本篇文章结束,采用一个方法解决一个页面的查询功能,可以减少开发过程中的代码量还是一个不错的选择

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Mybatis-plusMyBatis增强工具包,用于简化CRUD操作。该工具包为MyBatis提供了一些高效,有用,即用的功能使用它可以有效地节省您的开发时间。 Mybatis-plus特征: 与MyBatis完全兼容 启动时自动配置 开箱即用的用于操作数据库的界面 强大而灵活的条件包装器 生成主键的多种策略 Lambda样式的API 全能和高度可定制的代码生成器 自动分页操作 SQL注入防御 支持活动记录 支持可插拔的自定义界面 内置许多有用的扩展 Mybatis-plus功能: 1、单表CURD(简单 + 批量)操作,自动完成(支持 like 比较等查询)。 2、分页插件,Count查询自动或自定义SQL查询。 3、Spring根据不同环境加载不同配置支持(支持typeAliasesPackage通配符扫描)。 【自动生成Entity  Mapper  Service文件】 Mybatis-plus更新日志: v3.4.3 增加瀚高数据库支持 增加注解 Order By 支持默认排序 Wrapper exists notExists orderBy groupBy 支持参数绑定 Wrapper 支持 setParamAlias 其它优化 优化 KeyGenerator 支持多实现数据源注入 增强 ServiceImpl 泛型推断,解决多继承与代理问题 新增 PageDto 用于微服务对象传输序列化 新增 Page 提供静态 of 构造方式 增加代理 MethodHandleProxies 对 lambda 调试支持 调整 ActiveRecord 日志对象初始化 调整 ActiveRecord 模式 Model 类开发 pkVal 方法外部可用 删除标记过时代码 优化枚举值获取方式 分页 count 安全处理 Sequence 方法支持重写支持 升级 Mybatis 3.5.7 修复自动配置 lazy-initialization 无属性提示 修复 mysql on duplicate key update 字段名判断为表名问题 修复 lambda 条件 npe 异常 重构 lambda 信息提取方法 获取 lambda 信息不在序列化 合并 gitee pulls/ 141 fixed github issues/3208 3016 fixed github issues/3482 数据权限处理器支持 union all 调整事务未启用打印提示信息 单元测试优化相关依赖升级

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leach爱喝星冰乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值