ssm+Pagination超容易实现,分页功能

您所在的位置:网站首页 ssm分页功能实现两种方法 ssm+Pagination超容易实现,分页功能

ssm+Pagination超容易实现,分页功能

2023-10-17 21:28| 来源: 网络整理| 查看: 265

ssm+Pagination超容易实现,分页功能 我们实现的效果一,业务逻辑二,编写AdnubMapper和sql语句三,Service层实现分页逻辑四,Controller层五,admin_page.jsp页面

我们实现的效果

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

一,业务逻辑 1,我们的需求是:现有一张用户表(Admin)表,里面包含: 用户昵称(userName),登录用户名(login),邮箱(email) 注册时间(createTime) @Data @AllArgsConstructor @NoArgsConstructor public class Admin { private Integer id; private String login; private String userPswd; private String userName; private String email; private String createTime; }

2,@Darta等注解不理解的同学,可以去了解一下lombook插件 3,要求:我们的分页功能不但要对所有数据进行分页,还要对查询的条件进行分页,列如:根据userName(昵称) 和 email(邮箱) 和 id(编号) 4,我们这里借助我们的分页插件(pageHelper),使用Maven导入:

com.github.pagehelper pagehelper 5.2.0 二,编写AdnubMapper和sql语句

1,编写AdminMapper接口

@Mapper public interface AdminMapper { List selectAdminByKeyword(String keyword);//根据关键词进行分页查询 }

2,直接编写查询的Sql语句,至于分页的话,就让我们的分页插件来帮助我们干了。

select from t_admin login like CONCAT("%",#{keyword},"%") or user_name like CONCAT("%",#{keyword},"%") or email like CONCAT("%",#{keyword},"%")

我们编写的Sql语句,既可以根据邮箱,还可以根据昵称,还有用户名查询

三,Service层实现分页逻辑 @Service public class AdminServiceImpl implements AdminService { @Autowired AdminMapper adminMapper; /** * 关键字分页查询 * @param keyword 查询的关键词 * @param pageNum 页码 * @param pageSize 每页显示的条数 * @return 分页插件实体类,存储了分页的基本信息,和数据 */ @Override public PageInfo getAdminPage(String keyword, Integer pageNum, Integer pageSize) { //开启分页功能 PageHelper.startPage(pageNum,pageSize); //根据关键词查询数据 List adminList = adminMapper.selectAdminByKeyword(keyword); /// ※辅助代码:打印 adminList 的全类名 Logger logger = LoggerFactory.getLogger(AdminService.class); logger.debug("adminList 的全类名是:"+adminList.getClass().getName()); //将我们的adminList封装为PageInfo PageInfo adminPageInfo = new PageInfo(adminList); return adminPageInfo; } } 四,Controller层 @Controller public class AdminHandler { @Autowired AdminService adminService; @RequestMapping("/admin/page.htm") public String getAdminPage( // 注意:页面上有可能不提供关键词,要进行适配 // 在@RequestParam注解中设置defaultValue属性为空字符串表示浏览器不提 供关键词时,keyword 变量赋值为空字符串 @RequestParam(defaultValue = "",value = "keyword")String keyword, //浏览器没有提供页数,默认第一页 @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum, // 浏览器未提供 pageSize 时,默认每页显示 5 条记录 @RequestParam(value = "pageSize",defaultValue = "5")Integer pageSize, ModelMap modelMap ){ //查询分页数据 PageInfo adminPage = adminService.getAdminPage(keyword, pageNum, pageSize); //将数据存入模型 modelMap.addAttribute(CrowdConstant.ATTR_NAME_PAGE_INFO, adminPage); return "admin-page"; } }

每一行都备注了,就不做过多解释

五,admin_page.jsp页面

页面部分,我们需要导入:利用我们的pagination来实现具体效果

1.html代码

2,Js代码

$(()=>{ initPagination(); }) //加载分页查插件 function initPagination() { //获取总记录数 var totalRecord=${requestScope.pageInfo.total}; //声明一个JSON对象来存储pagination要设置的属性 var properties={ num_edge_entries:3, // 边缘页数 num_display_entries:5, // 主体页数 callback:pageSelectCallback, // 指定点击分页的时候跳转页面的方法 items_per_page:${requestScope.pageInfo.pageSize}, // 每次显示页数的数量 current_page:${requestScope.pageInfo.pageNum-1}, //pagination使用pageIndex来管理页码。pageIndex从0开始,PageNum从1开始,所以要-1 prev_text:"上一页", // 上一页按钮显示的文本 next_text:"下一页" // 下一页按钮显示的文本 } //生成页码行条 $("#Pagination").pagination(totalRecord,properties); } // 回调函数的含义:声明出来之后不是自己调用,而是交给系统或者框架调用 //用户点击 1,2,3 这样的页码的时候进行跳转 // pageIndex是pagination传给我们的的那个“从0开始"的页码 function pageSelectCallback(pageIndex,jQuery) { // 根据pageIndex计算pageNum var pageNum=pageIndex+1; console.log(pageNum); // 跳转页码 在这个地方param类死于getParametter("keywork"); location.href="admin/page.htm?pageNum="+pageNum+"&keyword=${param.keyword}"; //由于每一个页码都是超链接,所以在这个函数后要取消超链接行为 return false; }

如果觉得有帮助到你,请留下你的赞,以示鼓励 加粗样式



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3