Java分页查询详解

分页sql

select * from 表名 limit 0,20;//第一页
select * from 表名 limit 20,20;//第二页
select * from 表名 limit 40,20;//第三页

需要PageNo(页码),PageSize(每页展示条数)作为方法入参

实现分页主要是对PageNo的处理,PageSize都是20

第一页的PageNo是(1-1)*20,sql是这样的select * from 表名 limit 0,20;

第二页的PageNo是(2-1)*20,sql是这样的select * from 表名 limit 20,20;

第三页的PageNo是(3-1)*20,sql是这样的select * from 表名 limit 40,20;

通过规律发现PageNo可以写为(PageNo-1)*PageSize作为我们分页方法的入参即可

Controller层

@RestController
@RequestMapping("/user")
@Validated
public class UserController {

    @Autowired
    private UserService userService;
    
    /**
     * 用户信息分页查询
     * @param pageSize
     * @param pageNo
     * @return
     */

    @RequestMapping("/queryrPage")
    public Resp queryByUserPage(@RequestParam(value = "pageSize") Integer pageSize,
                                  @RequestParam(value = "pageNo") Integer pageNo) {
        List<SysUserDO> sysUser = userService.queryByPage((pageNo - 1) * pageSize, pageSize);
        if (sysUser != null && sysUser.size() > 0) {
            return Resp.success(sysUser);
        } else {
            return Resp.success("");
        }
    }

}

Service层

/**
 * 用户服务
 */
public interface UserService {

     /**
     * 用户信息分页查询
     * @return
     */
    List<SysUserDO> queryByPage(Integer pageNo, Integer pageSize);

}

业务实现

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private SysUserDOMapper sysUserDOMapper;

    /**
     * 用户信息分页查询
     *
     * @param pageSize
     * @param pageNo
     * @return
     */
    @Override
    public List<SysUserDO> queryByPage(Integer pageNo, Integer pageSize) {
        return sysUserDOMapper.queryByPage(pageNo, pageSize);
    }

}

Mapper

public interface SysUserDOMapper extends BaseMapper<SysUserDO> {


        List<SysUserDO> queryByPage(@Param("pageNo")Integer pageNo, @Param("pageSize")Integer pageSize);


}

Mapper.xml

  <select id="queryByPage" resultMap="BaseResultMap">
    select * from user_base limit #{pageNo},#{pageSize}
</select>

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值