Spring Boot(十四):Spring Boot + mybatis + Thymeleaf 分页示例(纯底层代码,不是pagehelper)

Stella981
• 阅读 689

最近放假在家,终于有时间学习springboot了,当下最流行的java框架,我还没有接触过,有点遗憾,看过尚硅谷雷丰阳老师的springboot基础整合篇,现在轮到项目整合了,在B站发现一个码匠社区项目挺好的,最近刚完成了分页部分的练习,居然没用插件,直接原生代码,有点牛笔。

Spring Boot(十四):Spring Boot + mybatis + Thymeleaf 分页示例(纯底层代码,不是pagehelper)

一、项目架构

Spring Boot(十四):Spring Boot + mybatis + Thymeleaf 分页示例(纯底层代码,不是pagehelper)

二、实现功能

目前我实现了登录,简单的springboot+mybatis的增删改查,使用bootstrap的前台布局,问题列表展示,分页展示等功能。

三、代码实例

我一般是从controller层开始写

indexController

package life.majiang.community.controller;

...

@Controller public class IndexController {

@Autowired

QuestionService questionService;

@GetMapping(**"/"**)
**public** String index(@RequestParam(name=**"page"**,defaultValue = **"1"**) Integer page,
                    @RequestParam(name=**"size"**,defaultValue = **"5"**) Integer size,
                    Model model) {
    PaginationDTO pagination = **questionService**.list(page,size);
    model.addAttribute(**"pagination"**,pagination);
    **return** **"index"**;
}

}

QuestionService

package life.majiang.community.service;

...

@Service
public class QuestionService {

    @Autowired
    private QuestionMapper questionMapper;

    @Autowired
    private UserMapper userMapper;

    public PaginationDTO list(Integer page, Integer size) {
        PaginationDTO paginationDTO = new PaginationDTO();
        Integer totalCount = questionMapper.count();
        paginationDTO.setPagination(totalCount,page,size);
        if(page<1){
            page = 1;
        }
        if(page>paginationDTO.getTotalPage()){
            page = paginationDTO.getTotalPage();
        }

        Integer offset = size * (page-1);
        List<Question> questions = questionMapper.list(offset,size);
        List<QuestionDTO> questionDTOList = new ArrayList<>();

        for (Question question:questions){
            User user = userMapper.getUserBySingleName(question.getCreator());
            int comments = questionMapper.getComment_count(question);
            int views = questionMapper.getView_count(question);
            question.setComment_count(comments);
            question.setView_count(views);
            QuestionDTO questionDTO = new QuestionDTO();
            BeanUtils.copyProperties(question,questionDTO);
            questionDTO.setUser(user);
            questionDTOList.add(questionDTO);
        }
        paginationDTO.setQuestions(questionDTOList);
        return paginationDTO;
    }
}

QuestionMapper

package life.majiang.community.mapper;

...

@Mapper
public interface QuestionMapper {
    public void insertQuestion(Question question);
    public String selectQuestionTitle(Question question);
    public void updateQuestion(Question question);
    @Select("select * from question limit #{offset},#{size}")
    public List<Question> list(@Param(value = "offset") Integer offset,
                               @Param(value = "size") Integer size);

    public Integer count();
    public int getComment_count(Question question);
    public int getView_count(Question question);
    public int getCreatorTitleIsExist(Question question);

    @Select("select * from question where creator=#{creator} limit #{offset},#{size}")
    List<Question> listByCreator(@Param(value = "creator") String creator, @Param(value = "offset") Integer offset,@Param(value = "size") Integer size);
}

QuestionMapper,xml

**<!DOCTYPE** **mapper** **PUBLIC** **"-//mybatis.org//DTD Mapper 3.0//EN"** **"http://mybatis.org/dtd/mybatis-3-mapper.dtd"**_\>_ <**mapper** **namespace****="life.majiang.community.mapper.QuestionMapper"**> <**insert** **id****="insertQuestion"**> insert into question(creator,title,description,tag,updateTime,comment_count,view_count,like_count) values (#{creator},#{title},#{description},#{tag},now(),1,1,1); </**insert**> <**select** **id****="selectQuestionTitle"** **resultType****="String"**> select title from question where creator = #{creator}; </**select**> <**update** **id****="updateQuestion"**> _ _ </**update**> <**select** **id****="count"** **resultType****="Integer"**> select count(*) from question; </**select**> <**select** **id****="getComment_count"** **resultType****="Integer"**> select comment_count from question WHERE creator = #{creator} and title=#{title}; </**select**> <**select** **id****="getView_count"** **resultType****="Integer"**> select view_count from question WHERE creator = #{creator} and title=#{title}; </**select**> <**select** **id****="getCreatorTitleIsExist"** **resultType****="Integer"**> select count(*) from question WHERE creator = #{creator} and title=#{title}; </**select**> </**mapper**>

Spring Boot(十四):Spring Boot + mybatis + Thymeleaf 分页示例(纯底层代码,不是pagehelper)

四、实现效果

Spring Boot(十四):Spring Boot + mybatis + Thymeleaf 分页示例(纯底层代码,不是pagehelper)

Spring Boot(十四):Spring Boot + mybatis + Thymeleaf 分页示例(纯底层代码,不是pagehelper)

五、总结

样式有点low,知识点也有点陈旧,但也算是一种学习吧,小白就应该更努力一些,2月15日开始看的,今天19号,看到了P28,又是一个74分钟的视频,真的是有点长,有点烦躁,希望自己能坚持下去。

每一篇博客都是一种经历,程序猿生涯的痕迹,知识改变命运,命运要由自己掌控,愿你游历半生,归来仍是少年。

欲速则不达,欲达则欲速!

更多精彩内容,首发公众号【素小暖】,欢迎关注。

Spring Boot(十四):Spring Boot + mybatis + Thymeleaf 分页示例(纯底层代码,不是pagehelper)

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
ssm+PageHelper实现分页查询
通过搭建ssm框架,然后通过mybatis的分页插件pagehelp进行分页查询。源码:https://gitee.com/smfx1314/pagehelper看一下项目结构:!(https://oscimg.oschina.net/oscnet/62738252a25e8c7d8d60f9f9bcf7cb51695.png)首先创建
Stella981 Stella981
3年前
Spring Boot(八):Okhttp实现GitHub第三方登录
最近一直在学习springboot,刚刚看完雷丰阳老师讲的springboot基础、整合视频,相见恨晚的赶脚,顺理成章的看了尚硅谷的springboot谷粒商城项目视频,但是,有种说不出的感觉,看了16节,还是放弃了,在bilibili上又搜索了一番,找到了现在学习的这个视频,码匠社区项目,看了几节,感觉还可以,项目中用到了GitHub第三方登录,第一次接触
Stella981 Stella981
3年前
SpringBoot 整合Filter
SpringBoot整合Filter一、创建基础SpringBoot项目,集成Web即可<dependency\<groupId\org.springframework.boot</groupId\<a
Stella981 Stella981
3年前
SpringBoot2.0应用(五):SpringBoot2.0整合MyBatis
如何整合MyBatis1、pom依赖<dependency<groupIdorg.mybatis.spring.boot</groupId<artifactIdmybatisspringbootstarte
Wesley13 Wesley13
3年前
MyBatis学习总结(17)——Mybatis分页插件PageHelper
如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页,部分特殊情况请看重要提示(http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/Important.markdown)。想要使用分页插件?请看如何使用分页
Stella981 Stella981
3年前
SpringBoot使用pagehelper注意事项
Spring和SpringBoot使用pagehelper的方式不太一样,从Spring到SpringBoot的朋友注意了!如果在SpringBoot中使用Spring加载pagehelper的方式,能获取数据,但是分页不准确。SpringBoot加载pagehelper步骤如下:maven搜索springbootpagehelper!
Stella981 Stella981
3年前
SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页
!(https://oscimg.oschina.net/oscnet/1fb60dcd6a1e4818ac02f895921663b7.jpg)乐哉码农上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进入正题吧!1.
Easter79 Easter79
3年前
SpringBoot使用pagehelper注意事项
Spring和SpringBoot使用pagehelper的方式不太一样,从Spring到SpringBoot的朋友注意了!如果在SpringBoot中使用Spring加载pagehelper的方式,能获取数据,但是分页不准确。SpringBoot加载pagehelper步骤如下:maven搜索springbootpagehelper!
Easter79 Easter79
3年前
SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页
!(https://oscimg.oschina.net/oscnet/1fb60dcd6a1e4818ac02f895921663b7.jpg)乐哉码农上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进入正题吧!1.
Easter79 Easter79
3年前
Spring如何使用4行代码优雅的实现模糊查询,精确查询,分页查询功能。
最近开始使用Spring开发新项目了,开发新项目必定少不了折腾增删查改。其中模糊查询,精确查询,分页查询也算是不好对付的功能,需要手写大量重复的代码来实现相关的功能,如何优雅的实现查询功能呢? 首先上两张截图。!(https://oscimg.oschina.net/oscnet/388879498414582b02b00741b041a430