(SSM项目)开发CRUD后台管理系统02

时间:2022-10-23 15:28:50

Mysql建表

1.两张表

(SSM项目)开发CRUD后台管理系统02

(SSM项目)开发CRUD后台管理系统02

2.generator生成bean,mapper,interface

(SSM项目)开发CRUD后台管理系统02

生成后

(SSM项目)开发CRUD后台管理系统02

3.前段页面的编写

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%
	pageContext.setAttribute("path", request.getContextPath());
%>
<!-- Web路径
不以/开始的相对路径,找资源,以当前路径为基准容易出问题
以/开始的相对路径,找资源以服务器路径为基准(http://localhost;3306),需要加上项目名
http://localhost:3306/SSM_CRUD
 -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>员工列表</title>
<!-- bootstrap-->
<script src="${path}/static/viewresource/jquery.min.js"></script>
<script src="${path}/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<link href="${path}/static/bootstrap-3.3.7-dist/css/bootstrap.css" rel="stylesheet">
<%--     	<script src="${path }/static/viewresource/jquery.min.js"></script>
    <script src="${path }/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    <link href="${path }/static/bootstrap-3.3.7-dist/css/bootstrap.css" rel="stylesheet"> --%>
</head>
<body>
	<!-- 修改emp模态框 -->
	<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#emp_add_model">Launch demo modal</button>
	<!-- Modal -->
	<div class="modal fade" id="empUpdateModel" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
		<div class="modal-dialog" role="document">
			<div class="modal-content">
				<div class="modal-header">
					<button type="button" class="close" data-dismiss="modal" aria-label="Close">
						<span aria-hidden="true">×</span>
					</button>
					<h4 class="modal-title">员工修改</h4>
				</div>
				<div class="modal-body">
					<form class="form-horizontal">
						<div class="form-group">
							<label class="col-sm-2 control-label">empName</label>
							<div class="col-sm-10">
								<p class="form-control-static" id="empName_update_static"></p>
								<span class="help-block"></span>
							</div>
						</div>
						<div class="form-group">
							<label class="col-sm-2 control-label">email</label>
							<div class="col-sm-10">
								<input type="email" name="email" class="form-control" id="email_update_input" placeholder="email@qq.com">
								<span class="help-block"></span>
							</div>
						</div>
						<div class="form-group">
							<label class="col-sm-2 control-label">gender</label>
							<div class="col-sm-10">
								<label class="radio-inline"> <input type="radio" name="gender" id="gender1_update_input" value="M" checked="checked"> 男
								</label> <label class="radio-inline"> <input type="radio" name="gender" id="gender1_update_input" value="F"> 女
								</label>
							</div>
						</div>
						<div class="form-group">
							<label class="col-sm-2 control-label">deptName</label>
							<div class="col-sm-4">
								<select class="form-control" name="dId">
								</select>
							</div>
						</div>
					</form>
				</div>
				<div class="modal-footer">
					<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
					<button type="button" class="btn btn-primary" id="emp_update_btn">更新</button>
				</div>
			</div>
		</div>
	</div>
	<!-- 新增emp模态框 -->
	<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#emp_add_model">Launch demo modal</button>
	<!-- Modal -->
	<div class="modal fade" id="empAddModel" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
		<div class="modal-dialog" role="document">
			<div class="modal-content">
				<div class="modal-header">
					<button type="button" class="close" data-dismiss="modal" aria-label="Close">
						<span aria-hidden="true">×</span>
					</button>
					<h4 class="modal-title" id="myModalLabel">员工添加</h4>
				</div>
				<div class="modal-body">
					<form class="form-horizontal">
						<div class="form-group">
							<label class="col-sm-2 control-label">empName</label>
							<div class="col-sm-10">
								<input type="text" name="empName" class="form-control" id="empName_add_input" placeholder="empName">
								<span class="help-block"></span>
							</div>
						</div>
						<div class="form-group">
							<label class="col-sm-2 control-label">email</label>
							<div class="col-sm-10">
								<input type="email" name="email" class="form-control" id="email_add_input" placeholder="email@qq.com">
								<span class="help-block"></span>
							</div>
						</div>
						<div class="form-group">
							<label class="col-sm-2 control-label">gender</label>
							<div class="col-sm-10">
								<label class="radio-inline"> <input type="radio" name="gender" id="gender1_add_input" value="M" checked="checked"> 男
								</label> <label class="radio-inline"> <input type="radio" name="gender" id="gender1_add_input" value="F"> 女
								</label>
							</div>
						</div>
						<div class="form-group">
							<label class="col-sm-2 control-label">deptName</label>
							<div class="col-sm-4">
								<select class="form-control" name="dId">
								</select>
							</div>
						</div>
					</form>
				</div>
				<div class="modal-footer">
					<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
					<button type="button" class="btn btn-primary" id="emp_save_btn">保存</button>
				</div>
			</div>
		</div>
	</div>
	<!-- 搭建显示页面 -->
	<div class="container">
		<!-- 标题 -->
		<div class="row">
			<div class="col-md-12">
				<h1>SSM_CRUD</h1>
			</div>
		</div>
		<!-- 按钮 -->
		<div class="row">
			<div class="col-md-4 col-md-offset-8">
				<button class="btn btn-primary" id="emp_add_model_btn">新增</button>
				<button class="btn btn-danger" id="emp_delete_all_btn">删除</button>
			</div>
		</div>
		<!-- 显示表格 -->
		<div class="row">
			<div class="col-md-12">
				<table class="table table-hover" id="emps_tables">
					<thead>
						<tr>
							<th><input type="checkbox" id="check_all" /></th>
							<th>#</th>
							<th>empName</th>
							<th>gender</th>
							<th>email</th>
							<th>deptName</th>
							<th>操作</th>
						</tr>
					</thead>
					<tbody>
					</tbody>
				</table>
			</div>
		</div>
		<!-- 显示分页-->
		<div class="row">
			<!-- 分页文字信息 -->
			<div class="col-md-6" id="page_info_area"></div>
			<!-- 分页条信息 -->
			<div class="col-md-6" id="page_nav_area"></div>
		</div>
	</div>
	<script type="text/javascript">
		var totalRecoad, currentPage;

		//页面加载完后,直接发送ajax请求,得到分页数据
		$(function() {
			//去首页
			to_page(1);
		});

		function to_page(pn) {
			$.ajax({
				url : "${path}/emps",
				data : "pn=" + pn,
				type : "get",
				success : function(result) {
					/* console.log(result); */
					//解析显示分页信息
					build_emps_table(result);
					//解析显示分页条
					build_page_info(result);
					//解析显示分页数据源
					build_page_nav(result);
				}
			});

		}

		function build_emps_table(result) {
			//先清空再构建
			$("#emps_tables tbody").empty();
			//获取层层包装下的json数据
			var emps = result.extend.pageInfo.list;
			//使用js的遍历方法
			$
					.each(
							emps,
							function(index, item) {
								//foreach:emps是list对象,item是list的emp对象,index下标
								var checkBoxTd = $("<td><input type='checkbox' class='check_item'/></td>");
								var empIdTd = $("<td></td>").append(item.empId);
								var empNameTd = $("<td></td>").append(
										item.empName);
								var genderTd = $("<td></td>").append(
										item.gender == "M" ? "男" : "女");
								var emailTd = $("<td></td>").append(item.email);
								var deptNameTd = $("<td></td>").append(
										item.department.deptName);

								/* <button class="btn btn-primary">新增</button>
								<button class="btn btn-danger">删除</button> */

								var editBtn = $("<button></button>")
										.addClass(
												"btn btn-primary btn-sm edit_btn")
										.append(
												$("<span></span>")
														.addClass(
																"glyphicon glyphicon-pencil"))
										.append("编辑");
								//为编辑按钮添加自定义属性,来表示当前员工id
								editBtn.attr("edit-id", item.empId);

								var delBtn = $("<button></button>")
										.addClass(
												"btn btn-danger btn-sm delete_btn")
										.append(
												$("<span></span>")
														.addClass(
																"glyphicon glyphicon-trash"))
										.append("删除");
								//为删除按钮添加自定义属性,来表示当前员工id
								delBtn.attr("del-id", item.empId);

								var btnTd = $("<td></td>").append(editBtn)
										.append(" ").append(delBtn);

								//append方法执行完返回员原来的原来的元素
								$("<tr></tr>").append(checkBoxTd).append(
										empIdTd).append(empNameTd).append(
										genderTd).append(emailTd).append(
										deptNameTd).append(btnTd).appendTo(
										"#emps_tables tbody");

							});
		}

		//显示分页信息
		function build_page_info(result) {
			//清空分页信息
			$("#page_info_area").empty();
			$("#page_info_area").append(
					"当前" + result.extend.pageInfo.pageNum + "页,总"
							+ result.extend.pageInfo.pages + "页,总"
							+ result.extend.pageInfo.total + "条记录");
			totalRecoad = result.extend.pageInfo.total;
			currentPage = result.extend.pageInfo.pageNum;
		}
		//导航栏,显示分页数据源
		function build_page_nav(result) {
			//清空导航
			$("#page_nav_area").empty();
			var ul = $("<ul></ul>").addClass("pagination");

			var firstPageLi = $("<li></li>").append(
					$("<a></a>").append("首页").attr("href", "#"));

			var prePageLi = $("<li></li>").append(
					$("<a></a>").append("«").attr("href", "#"));

			if (result.extend.pageInfo.hasPreviousPage == false) {
				firstPageLi.addClass("disabled");
				prePageLi.addClass("disabled");
			} else {
				//为元素添加翻上一页事件,首页时间
				firstPageLi.click(function() {
					to_page(1);
				});

				prePageLi.click(function() {
					to_page(result.extend.pageInfo.pageNum - 1);
				});
			}

			var nextPageLi = $("<li></li>").append(
					$("<a></a>").append("»").attr("href", "#"));

			var lastPageLi = $("<li></li>").append(
					$("<a></a>").append("末页").attr("href", "#"));

			if (result.extend.pageInfo.hasNextPage == false) {
				nextPageLi.addClass("disabled");
				lastPageLi.addClass("disabled");
			} else {
				//为元素添加翻下一页事件,末页时间
				nextPageLi.click(function() {
					to_page(result.extend.pageInfo.pageNum + 1);
				});

				lastPageLi.click(function() {
					to_page(result.extend.pageInfo.pages);
				});
			}

			//添加首页前一页
			ul.append(firstPageLi).append(prePageLi);

			//页码号:1,2,3,4,5
			$.each(result.extend.pageInfo.navigatepageNums, function(index,
					item) {
				var numLi = $("<li></li>").append($("<a></a>").append(item));

				if (result.extend.pageInfo.pageNum == item) {
					numLi.addClass("active");
				}
				numLi.click(function() {
					to_page(item);
				});
				ul.append(numLi);
			});
			//添加后一页,下一页
			ul.append(nextPageLi).append(lastPageLi);

			//把ul添加到nav中
			var navEle = $("<nav></nav>").append(ul);
			navEle.appendTo("#page_nav_area");
		}

		//点击新增按钮弹出模态框
		$("#emp_add_model_btn").click(function() {
			//发送ajax请求部门列表,显示下拉列表
			getDepts("#empAddModel select");
			//弹出模态框
			$("#empAddModel").modal({
				backdrop : "static"
			});
		});

		//弹出所有部门信息并显示在下拉列表
		function getDepts(ele) {
			//清空下拉列表
			$(ele).empty();

			$.ajax({
				url : "${path}/depts",
				type : "get",
				success : function(result) {
					/* console.log(result) */
					//显示部门信息在下拉列表中
					$("#empUpdateModel select")
					$.each(result.extend.depts, function() {
						var optionEle = $("<option></option>").append(
								this.deptName).attr("value", this.deptId);
						optionEle.appendTo(ele);
					});
				}
			});
		}

		//校验数据
		function validate_add_form() {
			//1.拿到要检验的数据,使用正则表达式
			//校验用户名
			var empName = $("#empName_add_input").val();
			var regName = /(^[a-zA-Z0-9_-]{3,16}$)|(^[\u2E80-\u9FFF]{2,5})/;
			if (!regName.test(empName)) {
				/* alert("用户名是2-5位中文或者6-16位英文和数字的组合");
				return false; */
				show_validate_msg("#empName_add_input", "error",
						"用户名是2-5位中文或者6-16位英文和数字的组合");
				return false;
			} else {
				show_validate_msg("#empName_add_input", "success", "")
			}
			//校验邮箱
			var email = $("#email_add_input").val();
			var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
			if (!regEmail.test(email)) {
				/* alert("邮箱输入不正确");
				//先清空之前的样式
				return false; */
				show_validate_msg("#email_add_input", "error", "邮箱输入不正确");
				/* $("#email_add_input").parent().addClass("has-error"); 
				$("#email_add_input").next("span").text("邮箱输入不正确"); */
				return false;
			} else {
				show_validate_msg("#email_add_input", "success", "");
				/* $("#email_add_input").parent().addClass("has-success");
				$("#email_add_input").next("span").text(""); */
			}
			return true;
		}

		//显示校验结果的提示信息
		function show_validate_msg(ele, status, msg) {
			//移除当前元素校验状态
			$(ele).parent().removeClass("has-success has-error");
			$(ele).next("span").text("");
			if ("success" == status) {
				$(ele).parent().addClass("has-success");
				$(ele).next("span").text(msg);
			} else if ("error" == status) {
				$(ele).parent().addClass("has-error");
				$(ele).next("span").text(msg);
			}
		}

		//点击保存,保存员工
		$("#emp_save_btn")
				.click(
						function() {
							//1.模态框中填写的表单数据交给服务器保存
							//1.先对要提交服务器的数据进行校验

							/* if(!validate_add_form()){
								return false;
							}	 */

							//2.发送ajax请求保存员工
							//serialize把表格数据序列化传给服务器
							/* alert($("#empAddModel form").serialize()); */
							$
									.ajax({
										url : "${path}/emp",
										type : "post",
										data : $("#empAddModel form")
												.serialize(),
										success : function(result) {
											/* alert(result.msg); */

											if (result.code == 100) {
												//员工保存成功
												//1.关闭模态框
												$("#empAddModel").modal('hide');
												//2.来到最后一页,显示刚才保存的数据 ,需要考虑如果最后一页满了要跳页,幸好pageInfo提供了支持
												to_page(totalRecoad);
											} else {
												//显示失败信息
												if (undefined != result.extend.errorFields.email) {
													//显示邮箱信息错误
													show_validate_msg(
															"#email_add_input",
															"error",
															result.extend.errorFields.email);
												}
												if (undefined != result.extend.errorFields.empName) {
													//显示员工信息错误
													show_validate_msg(
															"#empName_add_input",
															"error",
															result.extend.errorFields.empName);
												}
											}

										}
									});

						});

		//给新增绑定点击事件失败:js绑定是在页面生成的时候就写的,但是数据却是生成完了页面在拿数据的,所以时间上不可行。	
		//1)可以在创建新增按钮的时候绑定	2)绑定点击.live()
		//jquery新版本没有live,使用on进行替换
		$(document).on("click", ".edit_btn", function() {
			//alert("edit");

			//1.查出部门信息,显示部门信息
			getDepts("#empUpdateModel select");
			//2.查出员工信息,显示员工信息,把.edit_btn所在标签的edit-id属性的值作为参数
			getEmp($(this).attr("edit-id"));
			//3.把员工id传递给模态框更新按钮
			$("#emp_update_btn").attr("edit-id", $(this).attr("edit-id"));
			$("#empUpdateModel").modal({
				backdrop : "static"
			});
		});
		//获取员工信息
		function getEmp(id) {
			$.ajax({
				url : "${path}/emp/" + id,
				type : "GET",
				success : function(result) {
					console.log(result);
					var empData = result.extend.emp;
					$("#empName_update_static").text(empData.empName);
					$("#email_update_input").val(empData.email);
					$("#empUpdateModel input[name=gender]").val(
							[ empData.gender ]);
					$("#empUpdateModel select").val(empData.dId);
				}

			});
		}
		//点击更新,更新员工信息
		$("#emp_update_btn").click(function() {
			//校验邮箱
			var email = $("#email_add_input").val();
			var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;

			/* alert(regEmail.test(email)); */

			/* if(!regEmail.test(email)){
			
			show_validate_msg("#email_add_input","error","邮箱输入不正确");
			
			  return false;
			}else{
			show_validate_msg("#email_add_input","success","");
			
			} */

			//2.发送ajax请求保存更新的员工数据
			$.ajax({
				url : "${path}/emp/" + $(this).attr("edit-id"),
				/* type:"POST", */
				type : "PUT",
				data : $("#empUpdateModel form").serialize(),/* +"&_method=PUT" */
				success : function(result) {
					/* alert(result.msg); */
					//1.关闭模态框
					$("#empUpdateModel").modal("hide");
					//2.回到页面
					to_page(currentPage);
				}
			});
		});

		$(document).on("click", ".delete_btn", function() {
			//1.弹出确认删除对话框
			//alert($(this).parents("tr").find("td:eq(1)").text());
			var empName = $(this).parents("tr").find("td:eq(2)").text();
			var empId = $(this).attr("del-id");
			if (confirm("确认删除【" + empName + "】吗?")) {
				//确认,发送ajax请求删除即可
				$.ajax({
					url : "${path}/emp/" + empId,
					type : "DELETE",
					success : function(result) {
						alert(result.msg);
						//回到本页
						to_page(currentPage);
					}
				});
			}

		});
		
		//完成全选/全不选功能
		$("#check_all").click(function(){
			//attr获取checked一直undefined
			//我们这些dom原生的属性,attr获取自定义的值
			$(this).prop("checked");
			$(".check_item").prop("checked",$(this).prop("checked"));
		});
		
		//单击全部==全选
		$(document).on("click",".check_item",function(){
			//判断当前选择的个数,是否等于总长度
			var flag = $(".check_item:checked").length == $(".check_item").length;
			$("#check_all").prop("checked",flag);
		});
		
		//点击全部删除就批量删除
		$("#emp_delete_all_btn").click(function(){
			//
			var empNames = "";
			var del_idstr = "";
			$.each($(".check_item:checked"),function(){
				empNames += $(this).parents("tr").find("td:eq(2)").text()+",";
				//组装id字符串
				del_idstr += $(this).parents("tr").find("td:eq(1)").text()+"-";
			});
			//去除name多余的,
			empNames = empNames.substring(0,empNames.length-1);
			//去除id多余的-
			del_idstr = del_idstr.substring(0,del_idstr.length-1);
			if(confirm("确认删除【"+empNames+"】吗?")){
				//发送ajax请求删除
				$.ajax({
					url : "${path}/emp/" + del_idstr,
					type : "DELETE",
					success : function(result) {
						alert(result.msg);
						//回到本页
						to_page(currentPage);
					}
				});
			}
		});
		
	</script>
</body>
</html>

4.后端Controller

package com.suguowen.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.suguowen.bean.Department;
import com.suguowen.bean.Employee;
import com.suguowen.bean.Msg;
import com.suguowen.service.DepartmentService;

/*
 * 处理和部门有关的请求
 */
@Controller
public class DepartmentController {

	@Autowired
	private DepartmentService departmentService;
	
	/*
	 * 返回所有部门信息
	 */
	@RequestMapping("/depts")
	@ResponseBody
	public Msg getDepts() {
		System.out.println("=========进入controller=======");
		List<Department> list = departmentService.getDepts();
/*		for (Department department : list) {
			System.out.println(department.getDeptId());
			System.out.println(department.getDeptName());
		}*/
		
		return Msg.success().add("depts", list);
		
	}
}
package com.suguowen.controller;



import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.suguowen.bean.Employee;
import com.suguowen.bean.Msg;
import com.suguowen.service.EmployeeService;

/*
 * 处理员工CRUD请求
 */
@Controller
public class EmployeeController {
	
	@Autowired
	EmployeeService employeeService;
	
	/*
	 * 删除
	 * 单个批量二合一
	 * 批量删除:1-2-3
	 * 单个删除:1
	 */
	@RequestMapping(value="emp/{ids}",method=RequestMethod.DELETE)
	@ResponseBody
	public Msg deleteEmp(@PathVariable("ids")String ids) {
		if(ids.contains("-")) {
			List<Integer> del_ids = new ArrayList<Integer>();
			String[] str_ids = ids.split("-");
			//组装id集合
			for (String idString : str_ids) {	
				del_ids.add(Integer.parseInt(idString));
				employeeService.delectBatch(del_ids);
				/*Integer idInt = Integer.parseInt(idString);
				employeeService.deleteEmp(idInt);*/
			}
		}else {
			Integer id = Integer.parseInt(ids);
			employeeService.deleteEmp(id);
		}
		
		return Msg.success();
	}
	
	
	@RequestMapping(value="/emp/{id}",method=RequestMethod.GET)
	@ResponseBody
	public Msg getEmp(@PathVariable("id")Integer id) {
		Employee employee = employeeService.getEmp(id);
		return Msg.success().add("emp", employee);
		
	}
	/*
	 * 员工更新方法 
	 */
	@RequestMapping(value="/emp/{empId}",method=RequestMethod.PUT)
	@ResponseBody
	public Msg updateEmp(Employee employee) {
		System.out.println("更新的数据:"+employee);
		employeeService.updateEmp(employee);
		return Msg.success();
		
	}
	
	/*
	 *员工保存
	 *@valid保存校验规则
	 *BindingResult绑定校验结果
	 */
	@RequestMapping(value="/emp",method=RequestMethod.POST)
	@ResponseBody
	public Msg saveEmp(@Valid Employee employee,BindingResult result) {
		
		if(result.hasErrors()) {
			//校验失败,应该返回失败,在模态框中显示失败的信息
			Map<String, Object> map = new HashMap<String, Object>();
			List<FieldError> errors = result.getFieldErrors();
			for (FieldError fieldError : errors) {
				System.out.println("错误字段名:"+fieldError.getField());
				System.out.println("错误信息:"+fieldError.getDefaultMessage());
				map.put(fieldError.getField(), fieldError.getDefaultMessage());
			}
			return Msg.fail().add("errorFields", map);
		}else {
			employeeService.saveEmp(employee);
			return Msg.success();
		}

	}
	
	//responseBody返回json字符给客户端(方便解析)
	@ResponseBody
	@RequestMapping("/emps")
	public Msg getEmps(@RequestParam(value="pn",defaultValue="1")Integer pn) {
		
		System.out.println("==========进入Controller=======");
		
		//引入pageHalper插件
		//查询前调用传入页码和记录条数大小 
		PageHelper.startPage(pn, 5);
		List<Employee> list = employeeService.getAll();
		//使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了
		//封装了详细的分页信息,和查询数据,连续显示5页的页数
		PageInfo<Employee> page = new PageInfo<Employee>(list,5);
		
		return Msg.success().add("pageInfo", page);
	}
	
	
	//版本一:返回数据"对象"给客户端,缺点是对不同的客户端(ios,安卓,浏览器解析难度大)
/*	@RequestMapping("/emps")
	public String getEmps(@RequestParam(value="pn",defaultValue="1")Integer pn, 
			Model model) {
		
		System.out.println("==========进入Controller=======");
		
		//引入pageHalper插件
		//查询前调用传入页码和记录条数大小 
		PageHelper.startPage(pn, 5);
		List<Employee> list = employeeService.getAll();
		//使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了
		//封装了详细的分页信息,和查询数据,连续显示5页的页数
		PageInfo<Employee> page = new PageInfo<Employee>(list,5);
		model.addAttribute("pageInfo",page);
		
		return "list";
	}*/
	
}

6.service编写

package com.suguowen.service;

import java.util.List;

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

import com.suguowen.bean.Department;
import com.suguowen.bean.DepartmentExample;
import com.suguowen.bean.Employee;
import com.suguowen.dao.DepartmentMapper;

@Service
public class DepartmentService {
	@Autowired
	private DepartmentMapper deptmentMapper;
	
	public List<Department> getDepts() {
		System.out.println("=========进入service=======");
		List<Department> list = deptmentMapper.selectByExample(null);
		return list;
	}


}
package com.suguowen.service;

import java.util.List;

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

import com.suguowen.bean.Employee;
import com.suguowen.bean.EmployeeExample;
import com.suguowen.bean.EmployeeExample.Criteria;
import com.suguowen.dao.EmployeeMapper;

@Service
public class EmployeeService {
	
	@Autowired
	EmployeeMapper employeeMapper;

	
	 //查询所有员工
	 
	public List<Employee> getAll() {
		
		System.out.println("==========进入Service=======");
		
		List<Employee> list = employeeMapper.selectByExampleWithDept(null);
		return list;
	}

	/*
	 * 按员工id查询员工
	 */
	public void saveEmp(Employee employee) {
		employeeMapper.insertSelective(employee);
	}

	public Employee getEmp(Integer id) {
		Employee  employee = employeeMapper.selectByPrimaryKey(id);
		return employee;
	}

	/*
	 * 员工更新
	 */
	public void updateEmp(Employee employee) {
		employeeMapper.updateByPrimaryKeySelective(employee);
	}
	/*
	 * 员工删除
	 */
	public void deleteEmp(Integer id) {
		employeeMapper.deleteByPrimaryKey(id);
	}

	public void delectBatch(List<Integer> ids) {
		EmployeeExample example = new EmployeeExample();
		Criteria criteria = example.createCriteria();
		//delete from xxx where emp_id in(1,2,3)
		criteria.andEmpIdIn(ids);
		employeeMapper.deleteByExample(example);
	}

}