mybatis带上总数量的分页查询

本文展示了如何在MyBatis中实现分页查询的同时获取数据库表的总记录数,通过使用SQL的SQL_CALC_FOUND_ROWS和FOUND_ROWS()函数,结合Mapper和XML配置,可以在一次查询中获取数据列表和总数量。

mybatis带上总数量的分页查询

假设数据库我用limit去查询,但是想要获取实体类和表中的总数量时,可以用到此方法
直接上代码举例

Mapper层

/**
* list.get(0)是具体数据(这个数据也可以是一个List)
* list.get(1)是表中的总数量
*/
List<Object> selectUserByUserId(Integer userId);

xml层

	<!--  总数量  -->
	<resultMap type="java.lang.Integer" id="count">
        <result column="count"/>
    </resultMap>
    <!--  实体类映射  -->
    <resultMap type="com.cure.cure.entity.User" id="user">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="password" property="password"/>
    </resultMap>
    <!--  实体类需要映射进resultMap  -->
    <select id="selectUserByUserId" resultMap="user,count" >
        select SQL_CALC_FOUND_ROWS * from cure_user limit 0,1 ;
        SELECT FOUND_ROWS() AS count;
    </select>

测试一下

这里可以自行测试,我用的springboot的test

@SpringBootTest
class CureApplicationTests {
    @Resource
    private UserMapper userMapper;
    @Test
    void testCount(){
        List<Object> list=userMapper.selectUserByUserId(1);
        for (Object o : list) {
            System.out.println(o);
        }
    }
}

测试结果:成功

在这里插入图片描述

Mybatis使用pgsql进行带条件分页查询的步骤如下: 1. 首先,在mybatis的主配置文件mybatis-config.xml中配置分页插件。可以使用PageHelper插件来实现分页功能。在plugins标签中添加以下配置: ```xml <plugins> <!-- 分页插件拦截器 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins> ``` 2. 在Mapper接口中定义带条件分页查询的方法。例如,在Mapper接口中添加以下方法: ```java List<Student> queryStudentListByPage(@Param("condition") String condition, @Param("pageNum") int pageNum, @Param("pageSize") int pageSize); ``` 3. 在Mapper的XML文件中编写对应的SQL语句。例如,在mapper.xml文件中添加以下内容: ```xml <select id="queryStudentListByPage" resultType="Student"> SELECT * FROM student WHERE condition = #{condition} LIMIT #{pageNum}, #{pageSize} </select> ``` 4. 在Service层中调用Mapper接口的方法进行分页查询。例如,在Service层中添加以下代码: ```java public List<Student> queryStudentListByPage(String condition, int pageNum, int pageSize) { return studentDao.queryStudentListByPage(condition, (pageNum - 1) * pageSize, pageSize); } ``` 5. 在Controller层中调用Service层的方法进行分页查询。例如,在Controller层中添加以下代码: ```java @PostMapping("/queryStudentListByPage") public Result queryStudentListByPage(@RequestParam("condition") String condition, @RequestParam("pageNum") int pageNum, @RequestParam("pageSize") int pageSize) { List<Student> students = studentService.queryStudentListByPage(condition, pageNum, pageSize); return Result.ok(students); } ``` 通过以上步骤,你可以使用Mybatis和Pgsql进行带条件分页查询。在Controller层中调用对应的接口,传入条件、页码和每页数量,即可获取分页查询结果。 #### 引用[.reference_title] - *1* *3* [Mybatis 分页查询(实战版)](https://blog.youkuaiyun.com/qq_46703281/article/details/127751056)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Mybatis 使用分页插件 进行分页查询](https://blog.youkuaiyun.com/weixin_55556204/article/details/125314809)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值