前提:先导入MybatisPlus相关依赖
1、配置分页插件(不需要修改)
PaginationInterceptor
package com.wagn.s.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class PageConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
2、将查询条件封装成类
package com.wagn.s.vo;
import lombok.Data;
@Data
public class VoQuery {
private String name;
private String gender;
}
3、接口使用get请求,传入需要的参数
query接口
package com.wagn.s.controller;
import com.wagn.s.entity.UserTable;
import com.wagn.s.service.UserTableService;
import com.wagn.s.vo.VoQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.nio.file.Watchable;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author testjava
* @since 2020-09-12
*/
@RestController
@RequestMapping("/s/user-table")
public class UserTableController {
@Autowired
private UserTableService userTableService;
@GetMapping("query/{current}/{limit}")
public List<UserTable> query(@PathVariable Long current, @PathVariable Long limit,
VoQuery voQuery){
//current为当前页,limit为每页显示个数,voQuery为封装的查询条件
List<UserTable> rs = userTableService.myquery(current,limit,voQuery);
return rs;
}
}
4、获得条件后,执行多条件分页查询
myquery()方法
package com.wagn.s.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wagn.s.entity.UserTable;
import com.wagn.s.mapper.UserTableMapper;
import com.wagn.s.service.UserTableService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wagn.s.vo.VoQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author testjava
* @since 2020-09-12
*/
@Service
public class UserTableServiceImpl extends ServiceImpl<UserTableMapper, UserTable> implements UserTableService {
@Autowired
private UserTableService userTableService;
@Override
public List<UserTable> myquery(Long current, Long limit, VoQuery voQuery) {
//初始化page
Page<UserTable> page = new Page<>(current,limit);
//设置条件
QueryWrapper<UserTable> wrapper =new QueryWrapper<>();
//eq是等于,ge是大于等于,gt是大于,le是小于等于,lt是小于,like是模糊查询
if(!StringUtils.isEmpty(voQuery.getName())){
wrapper.like("name",voQuery.getName());
}
if(!StringUtils.isEmpty(voQuery.getGender())) {
wrapper.eq("gender", voQuery.getGender());
}
//执行查询
userTableService.page(page,wrapper);
long total = page.getTotal();//总数
List<UserTable> rs = page.getRecords();//结果
return rs;
}
}
(5、控制台查看底层执行的SQL)
配置属性
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
按照以上配置后MyBatis-Plus分页后total和pages总为0,需要添加添加MyBatis-Plus分页的配置:
注意新版配置和老版配置有区别:
老版本:
@Configuration
public class MybatisPlusConfig {
/**
* mybatis-plus分页插件
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
PaginationInterceptor page = new PaginationInterceptor();
return page;
}
}
新版本:
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
网友评论