【学而无止尽】MyBatis-Plus学习笔记03-条件包装器

上次我们学习了如何使用Mybatis-plus插件如何对数据进行分页展示,重复的代码这里不贴了。今天我们学习如何通过插件提供的"条件包装器"实现数据的条件查询及筛选等。

// 还是通过上一个示例,发送/user/findPage?pageNum=1&pageSzie=10获取分页的数据
// 我们这次不仅要分页的数据 还要条件满足的数据。
// IPage<T> selectPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper);
// 插件提供的selectPage方法接收两个参数
//  第一个参数是用于构建分页条件的对象:
// com.baomidou.mybatisplus.extension.plugins.pagination.Page
// 第二个参数是用于构建条件查询的条件包装器
// com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
	// 该类是一个包装器的抽象类 
	// QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
    public abstract class  AbstractWrapper<T> implements ISqlSegment {
    public AbstractWrapper() {
    }
    // 里面定义了许多的方法实现  官网说明:
		//用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
		//注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为
		// 说多无益 我们用示例试一下吧
    // 需求:根据name进行查询并分页
    @PostMapping("findPage")
    public IPage<Employee> findPage(Employee employee, Integer pageNum, Integer pageSize) {
        // 构建查询的包装器对象
        QueryWrapper qw = new QueryWrapper();
        // eq(R column, Object val) 第一个参数是数据库字段名 第二个参数是字段值
        //  效果:eq("name","李白") => WHERE name = "李白"
        qw.eq("name", employee.getName());
        return employeeMapper.selectPage(new Page(pageNum, pageSize), qw);
    }

在这里插入图片描述

    // 需求:根据name及address进行查询并分页
    @PostMapping("findPage")
    public IPage<Employee> findPage(Employee employee, Integer pageNum, Integer pageSize) {
        // 构建查询的包装器对象
        QueryWrapper qw = new QueryWrapper();
        Map searchMap = new HashMap();
        /**
         * allEq(Map<R, V> params)  组合条件查询
         * allEq(Map<R, V> params, boolean null2IsNull) 组合条件查询 如果null2IsNull为true value = null的值会以ISNULL查询 否则忽略
         */
        // 构建查询条件
        searchMap.put("name", employee.getName());
        searchMap.put("address", employee.getAddress());
        qw.allEq(searchMap, false);
        // WHERE name = '李白' AND address = '长白山'
        return employeeMapper.selectPage(new Page(pageNum, pageSize), qw);
    }

在这里插入图片描述

    // 需求:根据name及address进行查询并分页
    @PostMapping("findPage")
    public IPage<Employee> findPage(Employee employee, Integer pageNum, Integer pageSize) {
        // 构建查询的包装器对象
        // 如果查询条件正好对应bean的字段 则可以直接传入 也可以达到同上的效果 非常方便
        QueryWrapper qw = new QueryWrapper(employee);
        return employeeMapper.selectPage(new Page(pageNum, pageSize), qw);
    }
    // 需求:根据name及address进行查询并分页
    @PostMapping("findPage")
    public IPage<Employee> findPage(Employee employee, Integer pageNum, Integer pageSize) {
        // 构建查询的包装器对象
        QueryWrapper qw = new QueryWrapper();
        // ne(column,val) --> 不等于 <> 效果: name <> 杜甫
        qw.ne("name",employee.getName());
        // gt(column,val) --> 大于 >  效果:   id > 1
        qw.gt("id",employee.getId());
        // ge(column,val) --> 大于等于 >= 效果 : age >= 18
        qw.ge("age",employee.getAge());
        // ....还有很多的API都可以在官网上找到 如 like notLike between  isNull
        return employeeMapper.selectPage(new Page(pageNum, pageSize), qw);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值