如何在ssm框架中使用pagehelper

如何在ssm框架中使用pagehelper,第1张

PageHelper是MyBatis的分页查询的插件;他与使用的页面无关,只要你在调用分页查询语句之前调用相应的方法,即可实现分页查询功能; 如 //获取第1页,20条内容 PageHelper.startPage(1, 20)

1 public class Page {

2 private int page = 1 //初始页

3 private int rows = 10//一页多少行数据

4 private String q// 要查询的 关键字

5 private String order = "asc"// 是'asc'或'desc'

6 protected String sort = "d.id"// 那个字段进行排序

7

8 public int getBegin() {

9 return (page - 1) * rows

10 }

11

12 public int getEnd() {

13 return rows

14 }

15 // 上面4个属性给mapper使用,limit,order里面使用

16

17 public int getPage() {

18 return page

19 }

20

21 public void setPage(int page) {

22 this.page = page

23 }

24

25 public int getRows() {

26 return rows

27 }

28

29 public void setRows(int rows) {

30 this.rows = rows

31 }

32

33 public String getQ() {

34 return q

35 }

36

37 public void setQ(String q) {

38 this.q = q

39 }

40

41 public String getOrder() {

42 return order

43 }

44

45 public void setOrder(String order) {

46 this.order = order

47 }

48

49 public String getSort() {

50 return sort

51 }

52

53 public void setSort(String sort) {

54 this.sort = sort

55 }

60 }

定义一个page类,简单的处理一哈,这个应该都看得懂,很简单

这个PageMapper就是Dao接口里面的 定义一个泛型,方便封装,其余的类想用分页直接继承,改一下类型

public interface PageMapper<T>{

Integer findCountByQuery(Query query) //查询的行数

List<T>findLimitByQuery(Query query) //模糊查询

}

下面就贴一下xml文件的 代码,就是写的sql 映射这一些,现在开发都用的映射,写xml配置,以前是用的注解,不会的度娘吧

下面

StudentQuery里面的定义就看自己的需求,get、set方法,这个会不 继承上面的pege就好了

<!-- 根据条件查询count -->

<!-- findCountByQuery 方法名 dao接口的两个 这个是查询的行数 parameterType就是返回 -->

<select id="findCountByQuery" resultType="int" parameterType="StudentQuery">

select count(id) from t_student

<!--用的包含-->

<include refid="whereSql" />

</select>

<!-- 根据条件查询limit -->

<!--里面的跟上面差不多 只是id要对应方法名哦-->

<select id="findLimitByQuery" resultType="Student"

parameterType="StudentQuery">

select id,name,teacher from

t_student

<include refid="whereSql" />

limit #{begin},#{end}

</select>

<!-- 公共的查询条件 根据name模糊查询 当然了 支持多个查询,在后面if就行了跟着这个写 -->

<sql id="whereSql">

<where>

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

and name like name('%',#{name},'%')

</if>

</where>

</sql>

下面就是service和实现类的

public interface PageService<T>{

/**

* 分页

* @param query

* @return

*/

PageList findByQuery(Query query)

}

public abstract class BaseServiceImpl<T>implements IBaseService<T>{

@Autowired

BaseMapper<T>baseMapper

@Override

public PageList findByQuery(Query query) {

PageList pageList = new PageList()

Integer count = baseMapper.findCountByQuery(query)

if (count == null || count == 0) {

return pageList

}

List<T>rows = baseMapper.findLimitByQuery(query)

pageList.setRows(rows)

pageList.setTotal(count)

return pageList

}

}

好了 最后只需要调用service的方法就搞定了

controller里面直接调用方法返回给前端json数据就好了

注意一点,

StudentQuery 是个人自己定义的 只需要继承pege类就好了 里面就是模糊查询的参数, 这个

PageList 就可以改变的哈 我是用这个类来表示的 当然 你可以换成二维数组 分页查询的数据默认查询全部 丢到前端的就是pagelist 学会变通一下 前端的就不写了 本人是写后台的 没看懂的可以留言

import java.util.ArrayList

import java.util.List

public class PageList {

private int total //多少行

private List rows = new ArrayList() //显示的数据存到集合里面

public int getTotal() {

return total

}

public void setTotal(int total) {

this.total = total

}

public List getRows() {

return rows

}

public void setRows(List rows) {

this.rows = rows

}

@Override

public String toString() {

return "PageList [total=" + total + ", rows=" + rows + "]"

}

}

/**

* controller

*

* @author Administrator

*

*/

@RequestMapping("/Student")

@Controller

public class Controller {

@Autowired

PageService service

/**

*

* @param query

* @return

*/

@ResponseBody

@RequestMapping("all")

public JSONObject selectAll(StudentQuery query) {

JSONObject jsonObject = new JSONObject()

jsonObject.put("student", service.findByQuery(query))

return jsonObject

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11583277.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存