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

 更新时间:2022年06月21日 10:27:41   作者:杰拉德·皮克·谢  
这篇文章主要介绍了Java IPage分页加自定义sql,主要包括引入依赖,impl常规操作,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

引入依赖

   <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分页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java Enum的简单使用

    Java Enum的简单使用

    这篇文章主要为大家详细介绍了Java Enum的简单使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Java 详细讲解分治算法如何实现归并排序

    Java 详细讲解分治算法如何实现归并排序

    分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解,本篇文章我们就用分治算法来实现归并排序
    2022-04-04
  • java编写的简单移动方块小游戏代码

    java编写的简单移动方块小游戏代码

    这篇文章主要介绍了java编写的简单移动方块小游戏代码,涉及Java简单图形绘制与事件响应的相关技巧,需要的朋友可以参考下
    2015-12-12
  • Java开发中POJO和JSON互转时如何忽略隐藏字段的问题

    Java开发中POJO和JSON互转时如何忽略隐藏字段的问题

    这篇文章主要介绍了Java开发中POJO和JSON互转时如何忽略隐藏字段的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • JVM垃圾回收算法的概念与分析

    JVM垃圾回收算法的概念与分析

    这篇文章主要给大家介绍了关于JVM垃圾回收算法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JVM具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • SpringBoot配置GlobalExceptionHandler全局异常处理器案例

    SpringBoot配置GlobalExceptionHandler全局异常处理器案例

    这篇文章主要介绍了SpringBoot配置GlobalExceptionHandler全局异常处理器案例,通过简要的文章说明如何去进行配置以及使用,需要的朋友可以参考下
    2021-06-06
  • 使用SpringMVC在redirect重定向的时候携带参数的问题

    使用SpringMVC在redirect重定向的时候携带参数的问题

    这篇文章主要介绍了使用SpringMVC在redirect重定向的时候携带参数的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 在Action中以Struts2的方式输出JSON数据的实例

    在Action中以Struts2的方式输出JSON数据的实例

    下面小编就为大家带来一篇在Action中以Struts2的方式输出JSON数据的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • Java经典算法汇总之冒泡排序

    Java经典算法汇总之冒泡排序

    冒泡排序基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
    2016-04-04
  • JAVA利用递归删除文件代码实例

    JAVA利用递归删除文件代码实例

    这篇文章主要介绍了JAVA利用递归删除文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论