一、通过limit查询语句实现分页,并展示
1.mapper.xml配置
1
2
3
|
<select id= "selectusersbypage" parametertype= "int" resultmap= "usermap" > select * number from user limit #{page}, 10 </select> |
查询user表,从第page项开始,每次返回10条数据
2.index.jsp
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
|
<html> <head> <title>page</title> <link rel= "stylesheet" type= "text/css" href= "css/index.css" rel= "external nofollow" > </head> <body> <div style= "width: 100%;margin-top:20px;" > <table> <tr style= "background-color: #f5f5f5;" > <th>username</th> <th>password</th> <th>sex</th> <th>email</th> <th>createtime</th> <th>updatetime</th> </tr> <div id = "show_data" > <c:choose> <c:when test= "${ulist != null}" > <c:foreach items= "${ulist}" var= "u" > <tr> <td>${u.username}</td> <td>${u.password}</td> <td>${u.sex}</td> <td>${u.email}</td> <td><fmt:formatdate value= "${u.create_time}" type= "date" /></td> <td><fmt:formatdate value= "${u.update_time}" type= "date" /></td> </tr> </c:foreach> </c:when> <c:otherwise> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </c:otherwise> </c:choose> </div> </table> <div class = "page" > <div class = "page_cell" >首页</div> <div class = "page_cell" ip= "up_page" >上一页</div> <div style= "float: left;margin: 2px" ><%=session.getattribute( "page" )%>/${ulist[ 0 ].number}</div> <div class = "page_cell" onclick= "next_page(<%=session.getattribute(" page ")%>)" >下一页</div> <div class = "page_cell" >末页</div> </div> </div> </body> <script type= "text/javascript" src= "js/index.js" ></script> <script type= "text/javascript" src= "js/jquery.js" ></script> </html> |
3.css
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
|
body{ width: 100 %; margin: 0 ; } table{ border:1px solid red; text-align: center; margin: auto; border-collapse: collapse; } tr{ border: 1px solid #ddd } th{ width: 150px; font-weight: 700 ; height: 36px; } td{ height: 36px; } .page{ margin: auto; width: 300px; text-align: center; margin-top: 10px; } .page_cell{ float : left; width: 50px; border:1px solid #f5f5f5; margin:2px; cursor: pointer; } .page_cell:hover{ -webkit-box-shadow: # 777 0px 0px 1px; } |
4.js
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
|
/** * 下一页 */ function next_page(page){ var data = { "page" :page }; $.ajax({ type: "post" , url: "/rolecontrol/next_page.do" , data:json.stringify(data), datatype: "json" , contenttype: "application/json" , success:function(data){ var show_data = document.getelementbyid( "show_data" ) show_data.innerhtml = " " ; for (i= 0 ; i<data.length; i++){ //.....异步刷新页面 } }, error:function(data){ alert( "网络连接错误" ); } }); } |
5.控制器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
@requestmapping ( "/index.do" ) public string index(modelmap map, httpsession session){ session.setattribute( "page" , 1 ); list<user> ulist = userservice.selectusersbypage( 0 ); map.put( "ulist" ,ulist); return "index" ; } /** * 用户信息分页查询 * @param params * @return */ @requestmapping (value = "/next_page.do" ,method = requestmethod.post) @responsebody public string getusersbypage( @requestbody jsonobject params){ // map<string,string> paramsmap = json.parseobject(params,new typereference<map<string,string>>(){}); system.out.println(params.get( "page" ).tostring()); list<user> ulist = userservice.selectusersbypage(integer.parseint(params.get( "page" ).tostring())* 10 ); return json.tojsonstring(ulist); } |
问题:在ajax传递json对象的时候,发生了415错误(未知媒体错误)
原因:
<mvc:annotation-driven />会自动注册defaultannotationhandlermapping和annotationmethodhandleradapter两个bean ,annotationmethodhandleradapter将会初始化7个转换器,可以通过调用annotationmethodhandleradapter的getmessageconverts()方法来获取转换器的一个集合 list<httpmessageconverter>
1
2
3
4
5
6
7
|
bytearrayhttpmessageconverter stringhttpmessageconverter resourcehttpmessageconverter sourcehttpmessageconverter xmlawareformhttpmessageconverter jaxb2rootelementhttpmessageconverter mappingjacksonhttpmessageconverter |
解决:对于json的解析就是通过mappingjacksonhttpmessageconverter转换器完成的。所以就需要加入jackson依赖包:
1
2
3
4
5
6
7
8
9
10
11
|
<dependency> <groupid>com.fasterxml.jackson.core</groupid> <artifactid>jackson-core</artifactid> <version> 2.5 . 2 </version> </dependency> <dependency> <groupid>com.fasterxml.jackson.core</groupid> <artifactid>jackson-databind</artifactid> <version> 2.5 . 2 </version> </dependency> |
加了依赖包后问题就完美解决了,运行结果如下:
以上查询的数据是通过存储过程批量插入的:
1
2
3
4
5
6
7
8
|
begin declare pid int ; set pid = 10000 ; while pid> 0 do insert into user values (pid, 'pw' , 'sex' , 'email' ,now(),now()); set pid = pid- 1 ; end while ; end |
这篇ssm实现分页查询的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/caijh/p/7794410.html