Mybatis分页查询同时返回总数和数据

这篇具有很好参考价值的文章主要介绍了Mybatis分页查询同时返回总数和数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

功能要求:

我们在使用Mybatis分页查询数据列表时,在用户的一个请求中常常需要同时返回当前页的列表数据以及满足条件的数据总条数用于分页。

实现方案

1)执行两次SQL,一次查列表,一次查总数

      这种方法最简单,也最容易实现。

2)分页插件PageHelper

      另一种常用的方式就是使用Mybatis提供的PageHelper插件。实际上PageHelper插件的原理同1)一样,就是执行两次SQL查询。

3)通过特殊的Mybatis语法,只执行一次SQL查询。这个功能要求connectionUrl参数包含allowMultiQueries=true,对于如zebra等集成工具,就算配了allowMultiQueries=true,也不一定起作用。

代码如下:

<select id="queryListAppendTotal"
        parameterType="com.domain.OrderExample"
        resultMap="BaseResultMap, recordCounts">
    select
    SQL_CALC_FOUND_ROWS
    <include refid="Base_Column_List"/>
    from order_example
    <if test="_parameter != null">
        <include refid="Example_Where_Clause"/>
    </if>
    <if test="orderByClause != null">
        order by ${orderByClause}
    </if>
    <if test="limit != null">
        <if test="offSet != null">
            limit ${offSet}, ${limit}
        </if>
        <if test="offSet == null">
            limit ${limit}
        </if>
    </if>
    ;SELECT found_rows() AS recordCounts;
</select>
 
 
 
<resultMap id="BaseResultMap" type="com.domain.OrderExample">
    <id column="id" jdbcType="BIGINT" property="id"/>
    <result column="order_id" jdbcType="VARCHAR" property="orderId"/>   
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
</resultMap>
 
 
<resultMap id="recordCounts" type="java.lang.Long">
  <result column="recordCounts" jdbcType="BIGINT"/>
</resultMap>

注意:在使用时须要在配置文件中,设置容许sql进行多语句执行:allowMultiQueries=true,在sql的url上加上这个配置就能够了文章来源地址https://www.toymoban.com/news/detail-634445.html

到了这里,关于Mybatis分页查询同时返回总数和数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MyBatis之分页查询:MyBatis PageHelper

    MyBatis,作为目前流行的ORM框架,大大方便了日常开发。而对于分页查询,虽然可以通过SQL的limit语句实现,但是比较繁琐。而MyBatis PageHelper的出现,则解决了这一痛点。这里将介绍如何在Spring Boot、MyBatis的环境中通过MyBatis PageHelper高效方便的实现分页查询 添加Maven依赖 添加配

    2024年02月09日
    浏览(25)
  • 【Java】Mybatis查询数据库返回JSON格式的字段映射到实体类属性

    今天遇到了一个bug,大概就是数据库(Mysql)中有一个 type 类型字段,数据类型为json,大概是这样的:[“苹果”,“香蕉”,“葡萄”]的数据格式,这个bug的问题所在呢就是查询后这个json格式的数据无法映射到我们实体类的属性上,解决方案如下: 实体类的配置: @TableField

    2024年02月15日
    浏览(33)
  • 【MyBatis】拦截查询结果同时动态替换

    项目中需要用到响应时替换某些字段的某些值。

    2024年02月04日
    浏览(35)
  • MySQL同时In俩个字段,In多个字段,Mybatis多个In查询问题,Mysql多个IN查询多出数据问题,Mysql多个IN查询 数据准确问题

            今天产品验收的时候,导入了大量数据;发现造价项目某个查询列表数据多出了几条数据;看了Mybatis查询,才发现是同时使用了多个IN查询导致的问题;入参是对象列表,In值是分开循环赋值的,问题就出在这里。         需要根据两个字段去查询多个值,这

    2024年02月13日
    浏览(27)
  • Mybatis分页查询——四种传参方式

    目录 相关导读 一、顺序传参 1. 持久层接口方法 2. UserMapper.xml映射文件新增标签

    2024年02月02日
    浏览(31)
  • mybatis plus 分页查询出现count()

    出现问题现象 使用mybatisplus分页时候count语句出错,控制台打印的sql为### The error may involve defaultParameterMap, The error occurred while setting parameters 查看打印的sql 不知道为啥不是count(*)而是count()导致分页报错 出现问题的原因和解决办法

    2024年02月15日
    浏览(25)
  • 【SpringBoot】MyBatis与MyBatis-Plus分页查询 & github中的PageHelper

            笔者写这篇博客是因为近期遇到的关于两者之间的分页代码差距,其实之前也遇见过但是没有去整理这篇博客,但由于还是被困扰了小一会儿时间,所以还是需要 加深记忆 。其实会看前后端传参解决这个问题很快、不麻烦。关于这两个框架的分页代码问题主要就

    2024年02月03日
    浏览(40)
  • Mybatis中limit用法与分页查询

    错误示范 错误示范一: 错误示范二: 这里先要了解一下: #{}和${}的区别: #{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换。#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类

    2024年02月15日
    浏览(30)
  • mybatis-plus实现分页查询

    分页查询使用的方法是: IPage:用来构建分页查询条件 Wrapper:用来构建条件查询的条件,目前我们没有可直接传为Null IPage:返回值,你会发现构建分页条件和方法的返回值都是IPage IPage是一个接口,我们需要找到它的实现类来构建它,具体的实现类,可以进入到IPage类中按ctrl+

    2023年04月08日
    浏览(37)
  • java springboot整合MyBatis实现分页查询以及带条件的分页查询

    之前的文章 java springboot整合MyBatis做数据库查询操作操作了springboot整合MyBatis,然后简单做了个按id查询的操作 那么 我们按上文搭建起的环境继续 我们直接在staffDao接口中声明一个分页函数 这里 我们直接在 sql语句中写limit 分页逻辑 参数是方法接收的 这个函数接收两个参数

    2024年02月10日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包