ssm分页想法

该博客讨论了在资讯展示场景中如何使用MySQL进行分页查询。通过`LIMIT`语句实现数据分页,从指定行开始获取指定数量的记录。在MyBatis中,定义了两个SQL查询,一个用于分页查询,另一个用于获取总记录数。在前端,根据用户输入的页数计算`start`值,并处理边界条件,防止超出页数范围。同时,博客提到了在页面中展示下一页和上一页的逻辑,以及如何处理用户未提供参数的情况。
摘要由CSDN通过智能技术生成

项目场景:资讯展示

资讯展示肯定得分页,因为挺多内容的:
在mysql中分页代码

select ... limit start,rows
表示从start+1行开始取,取出rows行,start0开始计算
limit 每页显示记录数*(第几页-1),每页显示数;

当第一次访问时候,传入的参数不知道,所以要判断如果什么都不传,要给一个固定的值。然后把一共有几页,和当前页数也传过去。在前端页面,下一页,计算一个start传进去然后显示,上一页同理。判断边界,超过边界要挑到错误页面。
因此要有2个mybatis的sql,一个是分页,一个查数据库一共有多少数据。

<select id="queryTitle" parameterType="_int" resultType="news">
        select title, time, read_nums, id
        from treat.news
        limit #{start},#{rows};
    </select>
    <select id="queryNumsNews" resultType="_int">
        select count(*)
        from treat.news;
    </select>
  @RequestMapping("/showTitleLimit")
    public String showAllLimit(Integer start, Integer rows, Model model, Integer page) throws ParseException {
        List<News> news;
        int count = newsService.queryNumsNews();
        int pageSize;
        if (rows == null && start == null && page == null) {
            rows = 5;
            start = 0;
            page = 1;
        }
        if (count % rows != 0) {
            pageSize = (count / rows) + 1;//几页
        } else {
            pageSize = (count / rows);
        }

        if (page <= pageSize && page >= 0 && start >= 0) {
            news = newsService.queryTitle(start, rows);
            model.addAttribute("newsTitle", news);
            model.addAttribute("pageSize", pageSize);
            model.addAttribute("page", page);
            model.addAttribute("nowSize", start);
            return "showAllNews";
        } else {
            model.addAttribute("errMsg", "超出页数");
            return "error";
        }
}

在这里插入图片描述
page是页数,点击下一页,假设现在page是2表示第二页,start就要是5*(3-1)也就是5*(page)
点击上一页,假设现在page是2表示第二页,start就要是5*(1-1)也就是5*(page-2)

对于分页的想法目前只能想到这里,以后想到再补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM(Spring + SpringMVC + MyBatis)中使用PageHelper进行分页查询是一种常见的做法。以下是使用PageHelper实现分页查询的步骤: 1. 首先,在项目的依赖管理中添加PageHelper的相关依赖。你可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>版本号</version> </dependency> ``` 请注意,将“版本号”替换为PageHelper的最新版本号。 2. 在Spring配置文件(例如applicationContext.xml)中配置PageHelper的插件。添加以下配置: ```xml <bean id="pageHelper" class="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> </bean> ``` 请注意,这里的dialect属性值可能需要根据你使用的数据库类型进行相应的设置。 3. 在你的DAO层接口中,添加使用PageHelper进行分页查询的方法。例如: ```java List<Entity> findEntitiesByPage(int pageNum, int pageSize); ``` 4. 在DAO层的XML映射文件中,使用PageHelper提供的插件进行分页查询。在查询语句之前添加以下配置: ```xml <select id="findEntitiesByPage" parameterType="map" resultMap="entityResultMap"> <!-- 此处为PageHelper提供的插件 --> <include refid="PageHelper.startPage"/> SELECT * FROM your_table <!-- 此处为PageHelper提供的插件 --> <include refid="PageHelper.endPage"/> </select> ``` 请注意,将"your_table"替换为你的实际表名,并且确保映射文件中已定义相应的结果映射。 5. 在Service层或Controller层调用DAO层的分页查询方法,传入页码和每页大小参数。 这样,你就可以使用PageHelper实现SSM分页查询了。记得在每次查询之后,需要手动清除ThreadLocal中的分页参数,以免对其他查询产生影响: ```java PageHelper.clearPage(); ``` 希望能对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值