Springboot+Mybatis实现分页加条件查询功能

本文实例为大家分享了Springboot+Mybatis实现分页加条件查询的具体代码,供大家参考,具体内容如下

User.xml





    -- 这里的id为函数名
        update user
        
            
                username=#{username},
            
            
                nickname=#{nickname},
            
            
                email=#{email},
            
            
                phone=#{phone},
            
            
                address=#{address}
            
        
        
            id = #{id}
        
    
 

    
 

    
 

    
        
            1=1
            
                and username like concat("%",#{username},"%")
            
            
                and email like concat("%",#{email},"%")
            
            
                and address like concat("%",#{address},"%")
            
        
    

UserMapper.java

package com.shelbourne.schooldelivery.mapper;
 
import com.shelbourne.schooldelivery.entity.User;
import org.apache.ibatis.annotations.*;
 
import java.util.List;
 
@Mapper
public interface UserMapper {
 
    //查询所有用户
    @Select("select * from user")
    //mybatis提供注解,注意SQL语句后不能加分号
    List findAll();
 
    //新增用户
    @Insert("insert into user(username,password,nickname,email,phone,address)" +
            "values(#{username},#{password},#{nickname},#{email},#{phone},#{address})")
    public Integer insert(User user);
 
    //通过注解(静态)和xml里面(动态)两种方式编写SQL语句
    int update(User user);
 
    //删除单个用户
    @Delete("delete from user where id=#{id}")
    Integer deleteById(@Param("id") Integer id);//最后加上@Param参数,参数名和上面的#{}里面的一样
 
    //查询记录条数
    @Select("select count(*) from user")
    Integer selectTotal();
 
    //编写动态SQL实现分页查询+条件查询
    //查询满足条件的某一页用户
    List selectPageWithParam(Integer startIdx, Integer size, String username, String email, String address);
 
    //查询满足条件的所有用户数
    int selectTotalWithParam(String username, String email, String address);
}

UserController.java

package com.shelbourne.schooldelivery.controller;
 
import com.shelbourne.schooldelivery.entity.User;
import com.shelbourne.schooldelivery.mapper.UserMapper;
import com.shelbourne.schooldelivery.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
@RequestMapping("/user")  //统一给接口加前缀,postman后台接口localhost:9090/user
@RestController
public class UserController {
 
    @Autowired  //注入其他类的注解
    private UserMapper userMapper;
 
    @Autowired
    private UserService userService;
 
    //查询所有用户
    @GetMapping
    public List findAll(String username) {
        return userMapper.findAll();
    }
 
    //通过POST请求进行新增和更新操作
    @PostMapping
    public Integer save(@RequestBody User user) {//一定要加上RequestBody,可以把前端传回的JSON对象转换为Java对象
        return userService.save(user);
    }
 
    //删除请求接口
    @DeleteMapping("/{id}")
    public Integer delete(@PathVariable Integer id) {//这里的“id”必须和DeleteMapping里面的名字一样
        return userMapper.deleteById(id);
    }
 
    @GetMapping("/page")
    public Map findPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @RequestParam String username,
                                        @RequestParam String email, @RequestParam String address) {
        int startIdx = (pageNum - 1) * pageSize, size = pageSize;
        List data = userMapper.selectPageWithParam(startIdx, size, username, email, address);//获取一页的数据
        int total = userMapper.selectTotalWithParam(username, email, address);//查询总条数
        Map res = new HashMap<>();
        res.put("data", data);//表格数据
        res.put("total", total);//分页使用
        return res;
    }
}

Home.vue中:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(Springboot+Mybatis实现分页加条件查询功能)