mybatis-plus分页查询(最便捷的方法没有之一)

1、需求说明

既然用了mybatis-plus那么就是为了偷懒,平常写分页代码,至少得Mapper.xml里面一顿操作,但是用了mybatis-plus就可以免去写这些东西了,用自带的lambda方法更简洁方便些;

2、代码实现

2.1、逻辑表

逻辑表,可以是实体表,也可以是视图(是的,mybatis-plus里面视图直接当成表做映射使用),简单的表直接分页,复杂一点的新建个视图,什么分页都不在话下,比如我有个视图:test_view

2.2、实体类

对应视图test_view的实体类TestView

import xxx...;

@ApiModel(value="测试视图")
@Data
@TableName("test_view")
public class TestView implements Serializable,Cloneable {
	
	@ApiModelProperty(value = "id")
    private String id;

	//...其他字段

}

分页查询条件对象Bean:TestViewParams

import xxx...;

@ApiModel(value="查询条件对象")
@Data
public class TestViewParams {
	
	@ApiModelProperty(value = "*描述")
    private String xxx;
    //...其他字段

	//下面这两个字段必须哦,分页参数
	@ApiModelProperty(value = "当前第几页", dataType = "Integer")
	Integer current;
	@ApiModelProperty(value = "查询几条", dataType = "Integer")
	Integer size;

}

2.3、Mapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import xxx.TestView;

public interface TestViewMapper extends BaseMapper<TestView> {
}

2.4、service

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import xxx.TestView;
import xxx.TestViewParams;

//TestView为视图映射实体类
//TestViewParams为查询条件,直接是TestView也可以
public interface TestViewService extends IService<TestView> {

    Page<TestView> pages(TestViewParams t);

}

2.5、impl

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import xxx...;

@Service
public class TestViewServiceImpl extends ServiceImpl<TestViewMapper, TestView> implements TestViewService {

	@Override
    public Page<DpDevicePages> device2Pages(DpDevicePagesParams t) {
		Page<TestView> page = new Page(t.getCurrent(), t.getSize());//查询条件TestViewParams里面需要声明current size属性
	    QueryWrapper<TestView> wrapper = new QueryWrapper<>();
	    if(!StringUtil.isNull(t.getCol1())){
	        wrapper.like("col_1", t.getCol2());
	    }
	    if(!StringUtil.isNull(t.getCol2())){
	        wrapper.eq("col_2", t.getCol2());
	    }
	    //...以此类推将需要的字段罗列出来进行查询即可
	 	return this.page(page, wrapper);
 	}
}

2.6、controller

import xxx...;

@RestController
@RequestMapping("/xxx")
public class TestController{

	@Autowired
	private TestViewService testViewService;
	
	@PostMapping("/pages")
	@ApiOperation(value="test_view分页查询", notes="分页参数2个,如当前第1页查询10条数据,则current=1,size=10")
	public ResponseResult<TestView> pages(@RequestBody TestViewParams t) {
	    return ResponseUtils.success(testViewService.pages(t));
	}

}

说明:只讲究功能实现哈,性能上没有考虑太多,请轻喷!另外,代码里面有一些swagger的注解可以删掉!

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cgv3

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

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

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

打赏作者

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

抵扣说明:

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

余额充值