• 条件查询和数据查询


    一、后端

    1.controller层

    1. package com.like.controller;
    2. import com.like.common.CommonDto;
    3. import com.like.entity.User;
    4. import com.like.service.UserService;
    5. import jakarta.annotation.Resource;
    6. import org.springframework.web.bind.annotation.GetMapping;
    7. import org.springframework.web.bind.annotation.RequestMapping;
    8. import org.springframework.web.bind.annotation.RestController;
    9. import java.util.List;
    10. @RestController
    11. @RequestMapping("/user")
    12. public class UserController {
    13. @Resource
    14. private UserService userService;
    15. @GetMapping("/getList")
    16. public CommonDto getList(){
    17. CommonDto commonDto = new CommonDto();
    18. List userList = userService.getList();
    19. commonDto.setContent(userList);
    20. return commonDto;
    21. }
    22. }

    2.service层

    1. package com.like.service;
    2. import com.baomidou.mybatisplus.extension.service.IService;
    3. import com.like.entity.User;
    4. import java.util.List;
    5. public interface UserService extends IService {
    6. List getList();
    7. }

    QueryWrapper是Mybatis-plus 3.0.7版本之前推出的查询工具类。和LambdaQueryWrapper的使用方法不同,QueryWrapper需要使用SQL语句来构建查询条件 

    1. package com.like.service.impl;
    2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    4. import com.like.entity.User;
    5. import com.like.mapper.UserMapper;
    6. import com.like.service.UserService;
    7. import jakarta.annotation.Resource;
    8. import org.springframework.stereotype.Service;
    9. import java.util.List;
    10. @Service
    11. public class UserServiceImpl extends ServiceImpl, User> implements UserService {
    12. @Resource
    13. private UserMapper userMapper;
    14. @Override
    15. public List<User> getList() {
    16. QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    17. List<User> selectList = userMapper.selectList(queryWrapper);
    18. return selectList;
    19. }
    20. }

    二、前端

    1.启动时展示数据

    首先编写axios的get请求,注意methods和created和data这些是同级,笔者就是犯了这个小错误,导致debug了一万年,希望大家引以为戒

    1. methods: {
    2. handleEdit(index, row) {
    3. console.log(index, row);
    4. },
    5. handleDelete(index, row) {
    6. console.log(index, row);
    7. },
    8. handleSizeChange(val) {
    9. console.log(`每页 ${val} 条`);
    10. },
    11. handleCurrentChange(val) {
    12. console.log(`当前页: ${val}`);
    13. },
    14. getUserList(){
    15. this.axios.get("http://localhost:3333/user/getList").then((resp)=>{
    16. console.log(resp,'resp');
    17. });
    18. }
    19. },
    20. created() {//Vue生命周期函数,此处的目的是页面打开,就调用函数,将数据库中的数据显示出来
    21. this.getUserList();
    22. }

    这样,启动前端工程后,立刻向后端发送了一个get请求,浏览器响应数据如下

    显然,我们需要的数据就在data的content中,此时只需让data中的tableData=resp.data.content

    1. getUserList(){
    2. this.axios.get("http://localhost:3333/user/getList").then((resp)=>{
    3. console.log(resp,'resp');
    4. this.tableData = resp.data.content;
    5. });
    6. }

    这时候,我们的数据库的数据就全部显示在页面上了

     2.条件查询

    现在我们需要的效果是,点击查询,触发条件查询,即根据姓名查询用户信息

    给getUserList方法加上参数name

    1. getUserList(){
    2. this.axios.get("http://localhost:3333/user/getList",{
    3. params:{
    4. name:this.query.name //参数让其等于输入框输入的name
    5. }
    6. }).then((resp)=>{
    7. console.log(resp,'resp');
    8. this.tableData = resp.data.content;
    9. });
    10. }

    按钮处添加点击事件,点击触发该方法

    <el-button type="primary" @click="getUserList">查询</el-button>

    点击查询按钮时候,我们可以看到前端有响应,并且network中的get请求带有参数,这样我们就可以编写后端代码了

    后端接口代码逻辑完善

    1. @Override
    2. public List<User> getList(User user) {
    3. LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
    4. //判断前端是否传来有参数,如果有参数,就使用这个构造条件
    5. if (ObjectUtils.isNotEmpty(user.getName())) {
    6. lambdaQueryWrapper.like(User::getName,user.getName());
    7. }
    8. List<User> userList = userMapper.selectList(lambdaQueryWrapper);
    9. return userList;
    10. }

    3.输入框增加可清除效果

    <el-input v-model="query.name" style="width:200px" placeholder="请输入用户姓名" clearable></el-input>

  • 相关阅读:
    C/C++ 11 thread_local 注意事项
    django基于python的平南盛世名城小区疫情防控系统--python-计算机毕业设计
    【mq】从零开始实现 mq-07-负载均衡 load balance
    安装Docker后的一些配置
    IEJoin: 提高 Databend range join 性能
    欧拉计划第265题:二进制圈
    数据库高级 III
    C++核心编程
    Java多态
    TDengineGUI无法连接TDengine
  • 原文地址:https://blog.csdn.net/m0_63732435/article/details/133471158