mybatis-plus使用QueryWrapper小结

本文介绍如何在MyBatisPlus中实现自定义分页查询,包括使用Page对象进行分页设置,通过QueryWrapper构建查询条件,以及如何在Mapper接口和XML配置文件中定义自定义分页查询。

mybatisplus自定义分页查询

接口:


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//实现类
 public PageList pageQuery(PageArgument pageArgument)  {
        //放入查询参数
        QueryWrapper queryWrapper=new  QueryWrapper ();
        //注意放入参数格式,关联查询要写别名
        queryWrapper.eq(StringUtils.isNotBlank(user.getId()), "b.id",user.getId());
      
        Page page = new Page();
        IPage<TestUser> temp = testMapper.pageQueryBaseline(new Page<TestUser>(pageArgument.getPage(), pageArgument.getRows()), queryWrapper);
        PageList pageList = new PageList();
        pageList.setTotal(temp.getTotal());
        pageList.setPageNum(pageArgument.getPage());
        pageList.setPageSize(pageArgument.getRows());
        pageList.setList(temp.getRecords());
        return pageList;
}


------------------------------------------------------------------------------------------------------------------------------------
//Mapper接口
@Mapper
public interface TestMapper extends BaseMapper<TestUser> {
    <E extends IPage<TestUser>> E pageQueryTestUser(E page, @Param(Constants.WRAPPER) Wrapper<TestUser> queryWrapper);

}

--------------------------------------------------------------------------
sql自定义:
 <!-- 分页查询-->
    <select id="pageQueryTestUser" resultType="TestUser">
            select b.* from TestUser b
            inner join TestStudent  i on i.id=b.id  ${ew.customSqlSegment}
    </select>

其中ew.customSqlSegment

对应条件构造器queryWrapper里的条件,会在sql中自动拼接,不需要在sql中再写判断条件userId=#{userId}这样的。

QueryWrapper 设置参数几种格式

queryWrapper.eq(“userid”,“aa”); //相当于userid=#{userid}
queryWrapper.like(“userid”,“aa”); //相当于模糊查询
queryWrapper.eq(StringUtils.isNotBlank(user.getId()), “b.id”,user.getId()); //先判断这个参数是不是空,为空则不放入,不为空则放入参数
queryWrapper.isNull(“userid”) //相当于where userid is null

有关queryWrapper使用or条件时,把or条件单独隔离,不影响后边的条件

import java.util.function.Consumer;

 QueryWrapper queryWrapper = new QueryWrapper();
   Consumer<QueryWrapper> consumer = qw -> {
                qw.eq("module", "b管理");
                qw.or();
                qw.eq("module", "a管理");
            };
queryWrapper.and(consumer);
queryWrapper.eq("name", "123");

这样拼接出来的条件就是,Consumer就相当于一个括号把or条件独立了
where (module=‘a管理’ or module=‘b管理’) and name='123’

不用Consumer直接用.or(),就会导致条件变成这样:
where module=a管理’ or module=‘b管理’ and name=‘123’
or后边是—> module=‘b管理’ and name=‘123’

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值