
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
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)