详解MyBatisPlus如何实现分页和查询操作

目录
  • 1.定义查询字段
  • 2.修改分页函数接口
  • 3.修改分页实现方法
  • 4.修改控制层
  • 5.效果体验

《SpringBoot整合MybatisPlus实现增删改查功能》在这篇文章中,我们详细介绍了分页的具体实现方法。但是,在日常的开发中还需要搜索功能的。下面让我们一起动起手来,实现一下吧。

1.定义查询字段

定义一个类,存放需要用到的查询字段。如下:

package com.didiplus.modules.sys.domain.entity.dto;

import lombok.Data;

/**
 * Author: didiplus
 * Email: 972479352@qq.com
 * CreateTime: 2022/5/7
 * Desc:  检索字段
 */
@Data
public class DictTypeRquest {

    /**
     * 字段名称
     */
    private String typeName;

    /**
     * 字段编码
     */
    private String typeCode;

    /**
     * 是否启用
     */
    private String enable;
}

2.修改分页函数接口

在分页函数接口中添加查询字段参数,如下:

public interface ISysDictTypeService extends IService<SysDictTypeEntity> {

    /**
    * 分页查询
    * @param pageDomain
     * @param dictTypeRquest
    * @return
    */
    IPage<SysDictTypeEntity> page(PageDomain pageDomain, DictTypeRquest dictTypeRquest);

}

3.修改分页实现方法

@Service
public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictTypeEntity> implements ISysDictTypeService {

        @Resource
        SysDictTypeMapper sysDictTypeMapper;
        @Override
        public IPage<SysDictTypeEntity> page(PageDomain pageDomain, DictTypeRquest dictTypeRquest) {
            IPage<SysDictTypeEntity> page = new Page<>(pageDomain.getPage(),pageDomain.getLimit());
             LambdaQueryWrapper<SysDictTypeEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
             lambdaQueryWrapper.like(StrUtil.isNotEmpty(dictTypeRquest.getTypeName()),SysDictTypeEntity::getTypeName,dictTypeRquest.getTypeName())
                     .like(StrUtil.isNotEmpty(dictTypeRquest.getTypeCode()),SysDictTypeEntity::getTypeCode,dictTypeRquest.getTypeCode())
                     .eq(StrUtil.isNotEmpty(dictTypeRquest.getEnable()),SysDictTypeEntity::getEnable,dictTypeRquest.getEnable());
            return sysDictTypeMapper.selectPage(page,lambdaQueryWrapper);
        }
}

StrUtil.isNotEmpty是先判断查询参数是否不为空,不为空才会把查询条件拼接在一起,这样就实现了动态SQL啦。

4.修改控制层

在控制层添加查询参数,代码如下:

    /**
     * 分页查询
     * @param pageDomain 分页对象
     * @param dictTypeRquest
     * @return IPage
     */
    @ApiOperation(value = "分页查询", notes = "分页查询")
    @GetMapping("/page")
    public IPage<SysDictTypeEntity> getSysDictTypePage(PageDomain pageDomain, DictTypeRquest dictTypeRquest) {
        return sysDictTypeService.page(pageDomain,dictTypeRquest);
    }

5.效果体验

后台日志输出效果:

到此这篇关于详解MyBatisPlus如何实现分页和查询操作的文章就介绍到这了,更多相关MyBatisPlus分页 查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MybatisPlus实现分页查询和动态SQL查询的示例代码

    目录 一.描述 二.实现方式 三. 总结 一.描述 实现下图中的功能,分析一下该功能,既有分页查询又有根据计划状态.开始时间.公司名称进行动态查询. 二.实现方式 Controller层 /** * @param userId 专员的id * @param planState 计划状态 * @param planStartTime 计划开始时间 * @param emtCode 公司名称-分身id * @return java.util.List<com.hc360.crm.entity.po.

  • MybatisPlus自定义Sql实现多表查询的示例

    前言 前段时间看同事的代码,发现他用Layui+MybatisPlus做分页查询做得很规整,认真看了下代码发现这种方式不仅适用于与Layui做分页查询,在任何时候需要多表联查的时候都可以用到.  以下以Layui分页查询作为参考,在实际应用中可以灵活使用. 分页查询VO对象 @Data @AllArgsConstructor @NoArgsConstructor public class LayuiData { private Integer code=0; private Long count

  • mybatisplus解除分页限制的实现

    前言 如果你的mybatisplus的分页受到限制,例如每次只能查询500条或者1000条,不用担心,马上解除限制吧. 解决方案 在MybatisPlusConfig中配置paginationInterceptor.setLimit(-1); 代表分页不受任何限制,当然如果对系统性能有限制,建议选择一个合理值,例如1w等. package com.softdev.system.config; import com.baomidou.mybatisplus.extension.plugins.Pa

  • MybatisPlus多表连接查询的问题及解决方案

    目录 一.序言 (一)背景内容 (二)场景说明 (三)前期准备 二.一对一查询 (一)查询单条记录 (二)查询多条记录 三.一对多查询 (二)查询多条记录 (三)查询多条记录(分页) 四.多对多查询 (一)查询单条记录 五.总结与拓展 (一)总结 (二)拓展 一.序言 (一)背景内容 软件应用技术架构中DAO层最常见的选型组件为MyBatis,熟悉MyBatis的朋友都清楚,曾几何时MyBatis是多么的风光,使用XML文件解决了复杂的数据库访问的难题.时至今日,曾经的屠龙者终成恶龙,以XML文

  • MyBatisPlus分页时排序的实现

    目录 简介 建库建表 依赖 配置 代码 Entity Service Controller 测试 简介 说明 本文用示例介绍MyBtisPlus分页时排序的方法. 分页时排序的方法 后端OrderItems排序 后端Wrapper排序 前端指定排序 排序涉及到的类 排序涉及到Page类的List<OrderItem> orders;成员,OrderItem定义如下: public class OrderItem implements Serializable { private static

  • MybatisPlus分页排序查询字段带有下划线的坑及解决

    目录 MybatisPlus分页排序查询字段带有下划线 MybatisPlus字段名称有下划线查询为null 原因分析 解决方案 MybatisPlus分页排序查询字段带有下划线 如果使用MybatisPlus的自动转驼峰命名法,分页排序查询的字段带有下划线时,会出问题. page = new Page<>(pageNo, pageSize); OrderItem orderItem = new OrderItem(); orderItem.setColumn("create_dat

  • MybatisPlus关联查询的完美实现方案

    目录 Mybatis-Plus 简介 连表?Left Join?Inner Join? 旧版代码 新版优化 相关工具类 总结 Mybatis-Plus 简介 什么是 MyBatis-Plus?Mybatis-Plus:为简化开发而生 MyBatis-Plus(简称 MP)是一个基于 MyBatis 的增强工具,它对 Mybatis 的基础功能进行了增强,但未做任何改变.使得我们可以可以在 Mybatis 开发的项目上直接进行升级为 Mybatis-plus,正如它对自己的定位,它能够帮助我们进一

  • 详解MyBatisPlus如何实现分页和查询操作

    目录 1.定义查询字段 2.修改分页函数接口 3.修改分页实现方法 4.修改控制层 5.效果体验 <SpringBoot整合MybatisPlus实现增删改查功能>在这篇文章中,我们详细介绍了分页的具体实现方法.但是,在日常的开发中还需要搜索功能的.下面让我们一起动起手来,实现一下吧. 1.定义查询字段 定义一个类,存放需要用到的查询字段.如下: package com.didiplus.modules.sys.domain.entity.dto; import lombok.Data; /*

  • 详解MyBatis-Plus Wrapper条件构造器查询大全

    一.引言 那么那么那么今天来说下MP中强大的条件查询功能. 本章是基于上个案例来讲的:MyBaits-Plus 快速入门案例 二.具体操作 首先来说说基本的查询吧,根据主键或者简单的查询条件进行查询. /** * 通过单个ID主键进行查询 */ @Test public void selectById() { User user = userMapper.selectById(1094592041087729666L); System.out.println(user); } /** * 通过多

  • 详解Mybatis-plus(MP)中CRUD操作保姆级笔记

    目录 一.什么是mybatis-plus 1.在java中访问数据库 2.Mybatis-plus简介 3.Mybatis-plus特性 二.第一个mybatis-plus开发 1.使用MP的步骤: 前提:数据库/表创建 2.mybatis-plus日志 三.MP操作CRUD 的 基本用法 1.添加数据后,获取主键值(MP可以自动实现主键回填) 2.更新数据 3.删除数据 4.查询数据 5.mybatis-plus中CRUD的底层实现原理 一.什么是mybatis-plus 1.在java中访问

  • 一文详解Mybatis-plus的介绍与使用

    目录 Mybatis-Plus简介 Mybatis-Plus特性 Mybatis-Plus实操 数据库相关配置 小项目运行配置 添加数据 删除数据 修改数据 查询数据 小结 Mybatis-Plus简介 Mybatis-Plus 是 MyBatis 的一个增强工具,专门针对于传统MyBatis开发中sql需要手动进行映射配置繁琐缺点的一款框架技术,这款框架技术提供了十分丰富的api供开发者们使用,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生.MyBatis-Plus 已

  • 详解mybatis-plus的 mapper.xml 路径配置的坑

    mybatis-plus今天遇到一个问题,就是mybatis 没有读取到mapper.xml 文件. 特此记录一下,问题如下: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.husy.mapper.SystemUserMapper.findUserByName at com.baomidou.mybatisplus.core.override.MybatisMapperMe

  • 详解mybatis-plus配置找不到Mapper接口路径的坑

    mybatis-plus今天遇到一个问题,就是mybatis 没有读取到mapper.xml 文件. 特此记录一下,问题如下: at com.baomidou.mybatisplus.core.override.MybatisMapperMethod$SqlCommand.<init>(MybatisMapperMethod.java:242) at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.<init>(

  • 详解mybatis-plus使用@EnumValue注解的方式对枚举类型的处理

    前言: 在开发中,我们经常会用到诸如:性别(男/女).审核状态(未审核/审核中/已审核)之类的数据,通常会在数据库中使用一个数字类型的字段来标识,比如:性别,用1来表示男,2来表示女,而在代码中一般会定义成enum类型或静态常量来避免在业务代码中出现"0/1"这种魔法值,但是在数据库存储及前后端交互的时候,就需要进行转化:无论是在SQL.前端还是后台转化,都需要写相应的代码,无形中增加了开发工作量:mybatis-plus实现了对该问题的处理,能够让我们在查询数据库时,直接能够返回字段

  • 详解mybatis-plus实体类中字段和数据库中字段名不对应解决办法

    在使用mybatis或者mybatis-plus时候,有些时候会出现数据库的字段名和实体类的字段名不一致的情况,如果运行那么这个字段就会无法进行自动映射而报错.这里就以我的数据库name字段名和这里的实体类的u_name字段名为例. 解决办法有以下三种 方法一: 将数据库中的字段和实体类中的字段名修改成一样的名字 方法二: 如果是自定以mapper.xml文件中手写的sql查询语句,可以给字段起一个别名例如这里就可以写成select name as u_name from- 方法三: 使用注解@

  • 详解MySQL数据库千万级数据查询和存储

    百万级数据处理方案 数据存储结构设计 表字段设计 表字段 not null,因为 null 值很难查询优化且占用额外的索引空间,推荐默认数字 0. 数据状态类型的字段,比如 status, type 等等,尽量不要定义负数,如 -1.因为这样可以加上 UNSIGNED,数值容量就会扩大一倍. 可以的话用 TINYINT.SMALLINT 等代替 INT,尽量不使用 BIGINT,因为占的空间更小. 字符串类型的字段会比数字类型占的空间更大,所以尽量用整型代替字符串,很多场景是可以通过编码逻辑来实

  • 详解MybatisPlus中@Version注解的使用

    目录 1. 简单介绍 2. 注解说明 3. 什么是乐观锁 3.1 乐观锁简介 3.2 乐观锁实例 4. 实例代码 1. 简单介绍 嗨,大家好,今天给想给大家分享一下关于Mybatis-plus 的 Service 层的一些方法的使用.今天没有总结,因为都是一些API没有什么可以总结的,直接看着调用就可以了. 下面我们将介绍 @Version 注解的用法,以及每个属性的实际意义和用法 2. 注解说明 在 MyBatis Plus 中,使用 @Version 实现乐观锁,该注解用于字段上面 3. 什

随机推荐