Java IPage分页操作 附加自定义sql

目录
  • 引入依赖
  • User实体类
  • controller
  • service
  • impl
    • impl常规操作
    • impl自定义参数重写Sql
    • 直接在impl 中写好 Sql 当作参数传入xml

引入依赖

   <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>

User实体类

@ApiModel(description = "用户实体")
public class User {

    /**
     * serialVersionUID
     */
    @ApiModelProperty(value = "主键")
    private Integer id;

    @ApiModelProperty(value = "用户名")
    private String username;

    @ApiModelProperty(value = "真实昵称")
    private String realname;

    @ApiModelProperty(value = "性别")
    private String sex;

    @ApiModelProperty(value = "工号")
    private String jobNum;

    @ApiModelProperty(value = "状态 0 启用 1 禁用")
    private Integer isDel;

    @ApiModelProperty(value = "部门")
    private Integer departmentId;

    private String departmentName;

    @ApiModelProperty(value = "密码")
    private String password;// 用户密码

    @ApiModelProperty(value = "手机")
    private String mobile;// 手机

    private Integer createUser;

    private Integer editUser;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date gmtCreate;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date gmtUpdate;
    }

controller

   @PostMapping("/likeUser")
    @ApiOperation("模糊查询—分页")
    public ApiResponse<User> getLikeUser(@RequestBody Map<String, Object> queryMap) {
        try {
            return ApiResponse.ofSuccess(userService.getLikeUser(queryMap));
        } catch (Exception e) {
            log.error("模糊查询—分页失败", e);
            return ApiResponse.ofError("模糊查询—分页失败");
        }
    }

service

 IPage<User> getLikeUser(Map<String, Object> queryMap);

impl

impl常规操作

 @Override
    public IPage<User> getLikeUser(Map<String, Object> params) {
        long size = Long.parseLong(StringUtils.defaultIfBlank(String.valueOf(params.get("limit")), "10"));
        long current = Long.parseLong(StringUtils.defaultIfBlank(String.valueOf(params.get("page")), "1"));

        QueryWrapper<User> q = new QueryWrapper<>();

        Object username= params.get("username");

        Object realname= params.get("realname");

        Object sex= params.get("sex");

        Object jobNum= params.get("jobNum");

        Object mobile= params.get("mobile");
        // 排序
        Object sort = params.get("sort");
        if (null != username && username.toString().trim().length() > 0) {
            q.lambda().like(User::getUsername, username);
        }
        if (null != realname) {
            q.lambda().like(User::getRealname, realname);
        }
        if (null != jobNum) {
            q.lambda().eq(User::getJobNum, jobNum);
        }
        if (null != startTime && null != endTime) {
            // GE 就是 GREATER THAN OR EQUAL 大于等于
            // LE 就是 LESS THAN OR EQUAL 小于等于
            q.lambda().ge(User::getCreateTime, startTime);
            q.lambda().le(User::getCreateTime, endTime);
        }
        if (sort.equals("ASC")) {
            // 升
            q.lambda().orderByAsc(User::getCreateTime);
        } else if (sort.equals("DESC")) {
            q.lambda().orderByDesc(User::getCreateTime);
        }
          IPage<USer> page = this.page(
                new Page<>(current, size), q);
        return page;
    }

impl自定义参数重写Sql

  • 思路:正常使用 Page<TcmcAlarm> page = new Page<>(current, size);分页插件
  • -返回 IPage<User> iPage = baseMapper.selectUser(page,username); 传参时 传入自定义的参数和 page
  • sql 正常接入即可
@Override
public IPage<TcmcAlarm> selectUSer(Map<String, Object> params) {
    long size = Long.parseLong(StringUtils.defaultIfBlank(String.valueOf(params.get("limit")), "10"));
    long current = Long.parseLong(StringUtils.defaultIfBlank(String.valueOf(params.get("page")), "1"));
    String id= params.get("devId").toString();
    String username= params.get("username").toString();
    // 分页的使用
    Page<User> page = new Page<>(current, size);
    // 自定义sql
    IPage<User> iPage = baseMapper.selectUser(page, username);
    return iPage;
}
// mapper
IPage<TcmcAlarm> selectUser(Page page, @Param("username") String username ;
// sql
<select id="selectUser" resultType="com.xxx.entity.User">
        select *
        from user
        where username LIKE CONCAT('%', #{username}, '%')
    </select>

直接在impl 中写好 Sql 当作参数传入xml

// 复杂拼接  这种写法最简单,直接Joiner.on 拼接 “,” “#” “、”_" “-” 之类的
String UNION = "UNION ALL ";
 // TB_SQL sql 片段
String join = Joiner.on(UNION).join(TB_SQL);
Page<User> page = new Page<>(current, size);
        IPage<User> iPage = tcmcAlarmMapper.selectUser(page, join);
// mapper
IPage<User> selectUser(Page page, @Param("data") String data);
// xml
 <select id="selectUser" resultType="com.xxx.entity.User">
        ${data}
    </select>

到此这篇关于Java IPage分页 加自定义sql的文章就介绍到这了,更多相关Java IPage分页内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java Fluent Mybatis 分页查询与sql日志输出详解流程篇

    目录 前言 准备数据 Sql日志配置 官方分页查询 PageHelper分页查询 总结 前言 接着我上一章:Java Fluent Mybatis 项目工程化与常规操作详解流程篇 下 上一章我把项目做了一部分工程化包装,主要还是想要之后的调试能够方便一些.那么这一章接着上一章的内容,做一下查询分页,并且将每次请求所调用的sql语句写在日志里面,便于我们观察定位问题.代码之后还是会上传到github. GitHub代码仓库地址:GitHub仓库 准备数据 简单的准备了一些数据. Sql日志配置 之

  • java分页拦截类实现sql自动分页

    本文实例为大家分享了完整的java分页拦截类,供大家参考,具体内容如下 package com.opms.interceptor; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import org.apache.ibatis.executor.p

  • Java IPage分页操作 附加自定义sql

    目录 引入依赖 User实体类 controller service impl impl常规操作 impl自定义参数重写Sql 直接在impl 中写好 Sql 当作参数传入xml 引入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.2</version&g

  • MyBatis-Plus 分页查询以及自定义sql分页的实现

    一.引言 分页查询每个人程序猿几乎都使用过,但是有部分同学不懂什么是物理分页和逻辑分页. 物理分页:相当于执行了limit分页语句,返回部分数据.物理分页只返回部分数据占用内存小,能够获取数据库最新的状态,实施性比较强,一般适用于数据量比较大,数据更新比较频繁的场景. 逻辑分页:一次性把全部的数据取出来,通过程序进行筛选数据.如果数据量大的情况下会消耗大量的内存,由于逻辑分页只需要读取数据库一次,不能获取数据库最新状态,实施性比较差,适用于数据量小,数据稳定的场合. 那么MP中的物理分页怎么实现

  • java jpa如何自定义sql语句

    目录 java jpa自定义sql语句 1.多表关联查询,含条件 2.清空表 3.模糊查询 4.查询结果为VO 5.使用@Param注解注入参数 jpa自定义sql查询结果 直接上代码 最后跑一下demo代码 java jpa自定义sql语句 本篇只是为了再次记录自己又学习了jpa的使用,框架原生的通过解析方法名多适用于单表操作,自定义的sql查询则可以解决所有问题,记录些自定义sql语法的记录,以便后续参照. 1.多表关联查询,含条件 @Query(value = "SELECT b FROM

  • java jpa如何自定义sql语句

    目录 java jpa自定义sql语句 1.多表关联查询,含条件 2.清空表 3.模糊查询 4.查询结果为VO 5.使用@Param注解注入参数 jpa自定义sql查询结果 直接上代码 最后跑一下demo代码 java jpa自定义sql语句 本篇只是为了再次记录自己又学习了jpa的使用,框架原生的通过解析方法名多适用于单表操作,自定义的sql查询则可以解决所有问题,记录些自定义sql语法的记录,以便后续参照. 1.多表关联查询,含条件 @Query(value = "SELECT b FROM

  • mybatis-plus实现自定义SQL、多表查询与多表分页查询语句实例

    目录 前言 1.自定义SQL 2.多表查询 3.多表分页查询 4.多表分页条件查询 总结 前言 本文介绍了在mybatis-plus中如何实现:自定义SQL语句,多表查询语句,多表分页查询语句 在说怎么实现之前我们要先明白一个概念,就是mybatis-plus是在mybatis的基础上进行增强,并不做改变,所以mybatis的操作在mybatis-plus中也是一样可以使用的,咱们直接上代码 1.自定义SQL 在mapper中自定义一个方法即可 @Repository public interf

  • mybatis-plus分页传入参数后sql where条件没有limit分页信息操作

    折腾了差不多两个小时,各种方法尝试,后来想想应该是where过滤后的数据量没有达到默认一页规定的数量所以干脆where就不显示limit信息了,试了一下还真是...这作者还真是把程序做的足够智能,可是这个智能也让我白白花掉了两个小时...还是自己太笨了-- 但是奇怪的是,如果我不设置QueryWrapper参数,where后面的分页限制又是可以出来的.百思不得其解作者的想法... 具体看代码: @Override public PageUtils queryPage(Map<String, Ob

  • Mybatis自定义SQL的关系映射、分页、排序功能的实现

    目的: 记录数据库表与实体对象之间不同的映射关系如何用mybatis的自定义sql和结果返回集处理. 1.三种对象映射关系 1.1 一对一 一个人对应一个身份证,一位同学对应一个班级,每个房间都有自己的房间号,当一个事物它对应另一个事物是唯一的,那么它们之间的关系就是一对一的. 这里我演示的案例是,一个学生有着一位老师 老师基础信息: 学生详细信息: 如果说,我们需要将两个表一起查出来,我们可以这么做: 问题: 如果对象的列重复了,必须要使用到别名 1.先定义实体结构,也就是我们返结果的实体类

  • Yii视图操作之自定义分页实现方法

    本文实例讲述了Yii视图操作之自定义分页实现方法.分享给大家供大家参考,具体如下: 1. 视图文件调用cgridview,clistview时候调用自定义的分页方法 <?php $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'news-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'template'=>'{items}{su

  • JPA原生SQL(自定义SQL)分页查询逻辑详解

    目录 JPA原生SQL(自定义SQL)分页查询 经过测试下面方法可以 pageable对象里定义排序的字段 JPA原生SQL分页查询踩坑记录 1.问题简述 2.解决方案 JPA原生SQL(自定义SQL)分页查询 JPA自己写SQL查询的话,分页还稍微麻烦 经过测试下面方法可以 @Query(nativeQuery = true, value = "select * from goods where " + " codeName like CONCAT('%',?1,'%')

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

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

随机推荐