阅读 22

pagehelper分页使用,pagehelper分页原理

MyBatis的寻呼功能可以使用PageHelper实现。

【实例】MyBatis使用PageHelper实现寻呼查询以显示寻呼信息。 执行效果如下图所示。

1、创建数据表在MySQL数据库中创建用户信息表(tb_user ),添加数据。

-确定数据表是否存在,如果存在,则返回DROP TABLE IF EXISTS tb_user; -“用户信息”数据表createtableifnotexiststb _ user (user _ idint auto _ incrementprimarykeycomment '用户号',user _ name viste provincevarchar ) 50 ) NOT NULL COMMENT '省',create _ timetimestampdefaulllation -数据insertintoTB_user(user_name, province ) values ) (pan_junbiao博客_01,(广东省) ) ) pan_junbiao博客_04 (,安徽省(pan_junbiao博客_09 )、(陕西省)、(pan_junbiao博客_10,(广东省)、(pan_junbiao博客_11,)、(广东省) )。 (pan_junbiao博客_14 (,安徽省),) pan_junbiao博客_15 ),山东省),) pan_junbiao博客_16 ),陕西省)。 (pan_junbiao博客_19 )、(黑龙江省)、(pan_junbiao博客_20,(安徽省)、(pan_junbiao博客_21,(江苏省) )、) (pan_junbiao博客_29 )、(山东省)、(pan_junbiao博客_30,(黑龙江省)、(pan_junbiao博客_31,(广东省) )、) 2、项目(1)创建SpringBoot项目,项目结构如下图:

(2)添加pom.xml配置信息

将PageHelper,MySQL JDBC数据库驱动程序添加到pom.xml配置文件中。

! -- SpringBoot/MyBatis是PageHelper寻呼控件--dependencygroupidcom.github.page helper/使用groupidartifactidpagehelper-spring-- MySQL的JDBC数据库驱动程序--dependencygroupidmysql/groupidartifactidmysql-coup

将缺省application.properties文件的后缀更改为".yml "。 这意味着配置文件名称为application.yml,它包含以下信息:

spring : #数据源数据源数据源

ce: url: jdbc:mysql://localhost:3306/db_admin?useSSL=false&amp username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver#MyBatis配置mybatis: type-aliases-package: com.pjb.entity #别名定义 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #指定 MyBatis 所用日志的具体实现,未指定时将自动查找 map-underscore-to-camel-case: true #开启自动驼峰命名规则(camel case)映射 lazy-loading-enabled: true #开启延时加载开关 aggressive-lazy-loading: false #将积极加载改为消极加载(即按需加载),默认值就是false lazy-load-trigger-methods: "" #阻挡不相干的操作触发,实现懒加载 cache-enabled: true #打开全局缓存开关(二级环境),默认值就是true#MyBatis使用pageHelper分页pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true

配置说明:

helper-dialect:配置使用哪种数据库语言,不配置的话pageHelper也会自动检测。

reasonable:在启用合理化时,如果 pageNum<1,则会查询第一页;如果 pageNum>pages,则会查询最后一页。

support-methods-arguments:支持通过Mapper接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。

2.1 创建实体类(Entity层)

在com.pjb.entity包中,创建UserInfo类(用户信息实体类)。

package com.pjb.entity;import org.springframework.stereotype.Component;import java.util.Date;/** * 用户信息实体类 * @author pan_junbiao **/@Componentpublic class UserInfo{ private int userId; //用户编号 private String userName; //用户姓名 private String province; //省份 private Date createTime; //注册时间 //省略getter与setter方法... @Override public String toString() { return "编号:" + this.getUserId() +" 姓名:" + this.getUserName() + " 省份:" + this.getProvince(); }}

在com.pjb.entity包中,创建UserSearchParam类(用户查询条件类)。

package com.pjb.entity;/** * 用户查询条件类 * @author pan_junbiao **/public class UserSearchParam{ private String userName; //用户姓名 private String province; //省份 //省略getter与setter方法...} 2.2 数据库映射层(Mapper层)

在com.pjb.mapper包中,创建UserMapper接口(用户信息Mapper动态代理接口)。

package com.pjb.mapper;import com.pjb.entity.UserInfo;import com.pjb.entity.UserSearchParam;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.SelectProvider;import org.apache.ibatis.jdbc.SQL;import org.springframework.stereotype.Repository;import java.util.List;/** * 用户信息Mapper动态代理接口 * @author pan_junbiao **/@Mapper@Repositorypublic interface UserMapper{ /** * 查询用户列表 */ @SelectProvider(type = UserSqlBuilder.class, method = "searchUserList") public List<UserInfo> searchUserList(UserSearchParam param); //建议将SQL Builder以映射器接口内部类的形式进行定义 public class UserSqlBuilder { public String searchUserList(UserSearchParam param) { return new SQL() { { SELECT("*"); FROM("tb_user"); WHERE("1 = 1"); if(param!=null) { //用户姓名 if(param.getUserName()!=null && param.getUserName().length()>0) { WHERE("user_name like '%${userName}%'"); } //省份 if(param.getProvince()!=null && param.getProvince().length()>0) { WHERE("province = #{province}"); } } } }.toString(); } }} 3、运行测试

【运行】查询第2页的用户数据,每页10条数据,并根据创建时间排序。

@Autowiredprivate UserMapper userMapper;/** * 分页查询用户列表 * @author pan_junbiao */@Testpublic void searchUserByParam(){ int pageIndex = 2; ///获取第2页的数据 int pageSize = 10; //每页10条数据 String orderBy = "create_time ASC"; //排序 //分页信息 PageHelper.startPage(pageIndex, pageSize, orderBy); //查询条件类 UserSearchParam userSearchParam = new UserSearchParam(); //userSearchParam.setUserName("pan_junbiao的博客"); //查询条件1 //userSearchParam.setProvince("广东省"); //查询条件2 //执行分页查询 PageInfo<UserInfo> userInfoPage = new PageInfo<UserInfo>(userMapper.searchUserList(userSearchParam)); //打印用户列表 System.out.println("\n"); List<UserInfo> userInfoList = userInfoPage.getList(); userInfoList.stream().forEach(System.out::println); //打印分页信息 System.out.println("当前页码:第" + userInfoPage.getPageNum() + "页"); System.out.println("分页大小:每页" + userInfoPage.getPageSize() + "条"); System.out.println("数据总数:共" + userInfoPage.getTotal() + "条"); System.out.println("总页数:共" + userInfoPage.getPages() + "页");}

PageInfo类提供的相关属性如下:


执行结果:


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐