Springmvc+java+mysqlページング条件クエリー独学コード
jsp:
js:
JAvaコントローラコード:
インタフェースコード:
インタフェース実装コード:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title> </title>
<script type="text/javascript" src=\'#\'" /js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src=\'#\'" /js/exportExcel.js"></script>
<style type="text/css">
.table td{ text-align:center; height:28px; line-height:28px; padding:0 5px; font-size:12px; color:#2b2b2b; border-bottom:1px dashed #cbcbcb;}
</style>
</head>
<body>
id:<input type="text" name="id" id="id"> :<input type="text" name="name" id="name">
<input type="button" onclick="getRegInfo();" value=" "> <input type="button" onclick="exportExcel()" value=" ">
<!--<form action="export.do" method="post">
<input type="submit" value=" ">
</form>-->
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="table">
<tr id="tabTitle"></tr>
<tbody id="tabBody" style="cursor:pointer"></tbody>
</table>
<div id="ttPage" class="page_bg">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="200">
</td>
<td align="right">
<span id="totalPage"></span>
<span id="currentPage"></span>
<span id="totalCount"></span>
<select id="pageSize" name="pageSize" onchange="goto_page('changePage')">
<option value='10'>
10
</option>
<option value='50'>
50
</option>
<option value='100'>
100
</option>
</select>
<a onclick="goto_page('first')" style="cursor: pointer; color: blue">[ ]</a>
<a onclick="goto_page('pre')" style="cursor: pointer; color: blue">[ ]</a>
<a onclick="goto_page('next')" style="cursor: pointer; color: blue">[ ]</a>
<a onclick="goto_page('last')" style="cursor: pointer; color: blue">[ ]</a>
<label>
<input id="page" name="page" type="text" style="border:solid 1px cornflowerblue;width:30px" />
<a onclick="goto_page('jump')" style="cursor: pointer; color: blue">
GO
</a>
</label>
</td>
</tr>
</table>
</div>
</body>
</html>
js:
$(document).ready(function(){
getRegInfo();
});
function getRegInfo(){
var id = $.trim($("#id").val());
var name = $.trim($("#name").val());
var rand = Math.random();
$.ajax( {
url : "./pageExport.do",
type : "GET",
async : false,
data: "id="+id+"&name="+encodeURI(encodeURI(name))+"&rand="+rand,
// dataType : 'json',
//contentType : "application/x-www-form-urlencoded; charset=utf-8",
success : function(data, textStatus) {
var json = eval(data);
changePage(json);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert(" !");
}
});
}
function changePage(json){
var title = [];
title.push( "<th>id</th>");
title.push( "<th> </th>");
title.push( "<th> </th>");
$("#tabTitle").html(title.join(""));
var body = [];
if (json == undefined || json.length == 0) {
body.push( "<tr><td colspan='3'> !</td></tr>");
} else {
for(var i = 0, len = json[0].list.length;i < len; i++){
body.push( "<tr>");
body.push( "<td>"+(json[0].list[i].id == null ? "" : json[0].list[i].id)+"</td>")
body.push( "<td>"+(json[0].list[i].name == null ? "" : json[0].list[i].name)+"</td>")
body.push( "<td>"+(json[0].list[i].psw == null ? "" : json[0].list[i].psw)+"</td>")
body.push( "</tr>")
}
}
$("#tabBody").html(body.join(""));
$("#currentPage").text(json[0].currentPage);
$("#totalCount").text(json[0].totalCount);
$("#totalPage").text(json[0].totalPage);
// $("#pageSize").html("<option value='"+pageSize+"' selected>"+pageSize+"</option>")
$(".selector").val(pageSize);
}
//
function goto_page(currentPage) {
var curp = $("#currentPage").text();
var totalPage = $("#totalPage").text();
if(currentPage == "next"){
curp = curp*1+1*1;
}
if(currentPage == "pre"){
curp = curp*1 - 1*1;
}
if(currentPage == "first"){
curp = 1;
}
if(currentPage == "last"){
curp = totalPage;
}
if(currentPage == "changePage"){
curp = curp;
}
if(currentPage == "jump"){
curp = $("#page").val();
}
var pageSize = $("#pageSize").val();//
if (pageSize == null || pageSize == "" || pageSize == undefined) {
pageSize = 10; // 10
}
var rand = Math.random();
var id = $.trim($("#id").val());
var name = $.trim($("#name").val());
$.ajax( {
url : "./pageExport.do",
type : "GET",
async : false,
data: "id="+id+"&name="+name+"&rand="+rand+"¤tPage="+curp+"&pageSize="+pageSize,
success : function(data, textStatus) {
var json = eval(data);
changePage(json);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert(" !");
}
});
}
function exportExcel(){
var id = $.trim($("#id").val());
var name = $.trim($("#name").val());
var rand = Math.random();
}
JAvaコントローラコード:
//mysql
@ResponseBody
@RequestMapping(value = { "pageExport.do" }, method = { RequestMethod.GET,RequestMethod.POST })
public void pageExportExcel(HttpServletRequest request,HttpServletResponse response) throws Exception{
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
List<Map<String,Object>> list = null;
String id = request.getParameter("id")==null ? "" :request.getParameter("id");
String name = request.getParameter("name")==null ? "" : java.net.URLDecoder.decode(request.getParameter("name"), "UTF-8");
String temp=request.getParameter("currentPage");
if(temp==null || temp.equals("null")){
currentPage=1;
}else {
currentPage=Integer.parseInt(temp);
}
int pageSize = request.getParameter("pageSize")==null ? 10 : Integer.parseInt(request.getParameter("pageSize"));//
int totalCount=regDao.findInfoRowCount(id,name);
int totalPage = totalCount%pageSize==0 ? totalCount/pageSize : totalCount/pageSize+1;//
if(currentPage<1||currentPage==1){
currentPage=1;
}else if (currentPage>totalPage) {
currentPage=totalPage;
}
try {
list = regDao.getregList(id,name,currentPage,pageSize);
} catch (Exception e) {
e.printStackTrace();
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("list", list);
map.put("currentPage", currentPage);
map.put("totalCount", totalCount);
map.put("totalPage", totalPage);
map.put("pageSize", pageSize);
JSONArray js = JSONArray.fromObject(map);
out.print(js);
out.close();
}
インタフェースコード:
package com.test.dao;
import java.util.List;
import java.util.Map;
public interface RegDao {
public List<Map<String, Object>> getregList(String id, String name,int currentPage,int pageSize);
public int findInfoRowCount(String id,String name);
}
インタフェース実装コード:
package com.test.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.mysql.jdbc.Statement;
import com.test.dao.RegDao;
@Repository("regDao")
@Transactional
public class RegDaoImpl implements RegDao{
private static Logger logger = Logger.getLogger(RegDaoImpl.class);
private JdbcTemplate jdbcTemplate;
@Resource(name = "jdbcTemplate")
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public List<Map<String, Object>> getregList(String id, String name,int currentPage,int pageSize) {
StringBuffer sb = new StringBuffer();
if(!"".equals(id) || !"".equals(name)){
sb.append(" where 1=1 ");
if(!"".equals(id)){
sb.append("and id = "+id+"");
}
if(!"".equals(name)){
sb.append(" and name like '"+name+"'");
}
}
String sql = "select * from student "+sb+" order by id LIMIT "+(currentPage-1)*pageSize+","+pageSize+"";
List<Map<String,Object>> list = null;
try {
list = jdbcTemplate.queryForList(sql);
} catch (Exception e) {
// TODO: handle exception
}
return list;
}
public int findInfoRowCount(String id,String name) {
int rtn=0;
StringBuffer sb = new StringBuffer();
if(!"".equals(id) || !"".equals(name)){
sb.append(" where 1=1 ");
if(!"".equals(id)){
sb.append("and id = "+id+"");
}
if(!"".equals(name)){
sb.append(" and name like "+name+"");
}
}
String sql = "select count(id) from student "+sb+" order by id";
try {
rtn = jdbcTemplate.queryForInt(sql);
} catch (Exception e) {
// TODO: handle exception
}
return rtn;
}
}