Mybatis分页插件PageHelper配置及使用方法详解

环境

框架:spring+springmvc+mybatis

pom.xml

?

1

2

3

4

5

6

<!-- 引入mybatis的 pagehelper 分页插件 -->

<dependency>

<groupId>com.github.pagehelper</groupId>

<artifactId>pagehelper</artifactId>

<version>5.1.2</version>

</dependency>

配置全局配置文件

在mybatis的全局配置文件中配置PageHelper分页插件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<!-- 引入 pageHelper插件 -->

<!--注意这里要写成PageInterceptor, 5.0之前的版本都是写PageHelper, 5.0之后要换成PageInterceptor-->

<plugins>

<plugin interceptor="com.github.pagehelper.PageInterceptor">

<!--reasonable:分页合理化参数,默认值为false,直接根据参数进行查询。

当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。-->

<!--<property name="reasonable" value="true"/>-->

</plugin>

</plugins>

</configuration>

使用

例如:实现对用户的多条件查询

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

package com.szfore.model;

import java.util.Date;

import java.util.List;

public class User {

private Integer id;

private String uname;

private String pwd;

private String name;

private Integer sex;

private String phone;

private String company;

private String jobtitle;

private String birth;

private Date createdate;

private Date lastlogintime;

private List<Role> roleList;

public List<Role> getRoleList() {

return roleList;

}

public void setRoleList(List<Role> roleList) {

this.roleList = roleList;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUname() {

return uname;

}

public void setUname(String uname) {

this.uname = uname == null ? null : uname.trim();

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd == null ? null : pwd.trim();

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name == null ? null : name.trim();

}

public Integer getSex() {

return sex;

}

public void setSex(Integer sex) {

this.sex = sex;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

this.phone = phone == null ? null : phone.trim();

}

public String getCompany() {

return company;

}

public void setCompany(String company) {

this.company = company == null ? null : company.trim();

}

public String getJobtitle() {

return jobtitle;

}

public void setJobtitle(String jobtitle) {

this.jobtitle = jobtitle == null ? null : jobtitle.trim();

}

public String getBirth() {

return birth;

}

public void setBirth(String birth) {

this.birth = birth == null ? null : birth.trim();

}

public Date getCreatedate() {

return createdate;

}

public void setCreatedate(Date createdate) {

this.createdate = createdate;

}

public Date getLastlogintime() {

return lastlogintime;

}

public void setLastlogintime(Date lastlogintime) {

this.lastlogintime = lastlogintime;

}

}

UserMapper

注意:mapper中就按不分页的那种写法就好

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

package com.szfore.dao;

import com.szfore.model.User;

import com.szfore.model.UserExample;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import org.springframework.stereotype.Repository;

@Repository

public interface UserMapper {

/**

* 多条件分页查询

* @param userParam

* @return

*/

public List<User> queryByPage(User userParam);

}

UserMapper.xml

注意:sql中就不要写limit了,pageHelp会自己处理,sql就按不分页的那种写法就好

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<!--多条件分页查询用户-->

<select id="queryByPage" resultType="com.szfore.model.User">

SELECT

*

FROM

`user`

<WHERE>

<if test="id != null and id != ''">

AND id = #{id}

</if>

<if test="uname != null and uname != ''">

AND uname = #{uname}

</if>

<if test="name != null and name != ''">

AND name like '%${name}%'

</if>

<if test="phone != null and phone != ''">

AND phone like '%${phone}%'

</if>

<if test="company != null and company != ''">

AND company like '%${company}%'

</if>

<if test="jobtitle != null and jobtitle != ''">

AND jobTitle like '%${jobtitle}%'

</if>

<if test="birth != null and birth != ''">

AND birth like '%${birth}%'

</if>  </WHERE>

</select>

UserServiceImpl

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

package com.szfore.service.impl;

import com.github.pagehelper.PageHelper;

import com.github.pagehelper.PageInfo;

import com.szfore.dao.MenuMapper;

import com.szfore.dao.UserMapper;

import com.szfore.dao.UserRoleMapper;

import com.szfore.model.*;

import com.szfore.service.IUserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

import javax.servlet.http.HttpSession;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

@Service

public class UserServiceImpl implements IUserService{

@Autowired

private UserMapper userMapper;

@Autowired

private MenuMapper menuMapper;

@Autowired

private UserRoleMapper userRoleMapper;

/**

* 多条件分页查询用户

* @param userParam

* @param pageNum

* @param pageSize

* @return

*/

public Json queryByPage(User userParam,Integer pageNum,Integer pageSize) {

//利用PageHelper分页查询 注意:这个一定要放查询语句的前一行,否则无法进行分页,因为它对紧随其后第一个sql语句有效

PageHelper.startPage(pageNum, pageSize);

List<User> userList = userMapper.queryByPage(userParam);

PageInfo<User> pageInfo = new PageInfo<User>(userList);

Json json = new Json();

json.setMsg("成功!");

json.setObj(pageInfo);

json.setSuccess(true);

return json;

}

}

说明:PageInfo是PageHelper自带的分页对象类,详情如下:

通过PageInfo获取其他信息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/chenyanbin/p/13416870.html

本文链接:https://my.lmcjl.com/post/7482.html

展开阅读全文

4 评论

留下您的评论.