概要说明:在这个员工实现分页功能上耗费了相当大的精力,首先需要晓得一对一是怎么配置的,然后就是sql语句是怎么写的,这两个缺一不可。

Page类参考:http://blog.csdn.net/su1573/article/details/76889339

1.创建Employee.java和Employee.xml映射文件

Employee.java


public class Employee {private Integer employeeId;    //员工idprivate Integer deptId;private Dept dept;              //部门private Integer jobId;private Job job;                //职业private String employeeName;    //员工名字private String employeeCardId;  //身份证private String employeeAddress; //地址private String employeePostCode; //邮政编码private String employeePhone;    //手机号private String employeeQQ;       //QQ号private String employeeEmail;    //E-mailprivate String employeeSex;      //性别private String employeeParty;    //政治面貌/***  使用@ModelAttribute接收参数时*  form表单中有日期,Spring不知道该如何转换,*  要在实体类的日期属性上加@DateTimeFormat(pattern="yyyy-MM-dd")注解 */@DateTimeFormat(pattern="yyyy-MM-dd")private Date employeeBirthday;   //出生日期private String employeeRace;     //民族private String employeeEducation;  //学历private String employeeHobby;      //爱好private Date employeeCreateDate; //建档日期//getter()和setter()省略
}

Employee.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="employee"><!-- 《员工与部门相关联》 --><resultMap type="com.su.domain.Employee" id="EmployeeWithDept"><id column="employeeId" property="employeeId"/><result column="deptId" property="deptId"/><result column="jobId" property="jobId"/><result column="employeeName" property="employeeName"/><result column="employeeCardId" property="employeeCardId"/><result column="employeeAddress" property="employeeAddress"/><result column="employeePostCode" property="employeePostCode"/><result column="employeePhone" property="employeePhone"/><result column="employeeQQ" property="employeeQQ"/><result column="employeeEmail" property="employeeEmail"/><result column="employeeSex" property="employeeSex"/><result column="employeeParty" property="employeeParty"/><result column="employeeBirthday" property="employeeBirthday"/><result column="employeeRace" property="employeeRace"/><result column="employeeEducation" property="employeeEducation"/><result column="employeeHobby" property="employeeHobby"/><result column="employeeCreateDate" property="employeeCreateDate"/><association property="dept" javaType="com.su.domain.Dept"><id column="deptId" property="deptId"/><result column="deptName" property="deptName"/><result column="deptDesc" property="deptDesc"/></association></resultMap><!-- 《员工与职业相关联 》“继承”《员工与部门相关联》 --><resultMap type="com.su.domain.Employee" id="EmployeeWithJobExtendDept" extends="EmployeeWithDept"><collection property="job" ofType="com.su.domain.Job"><id column="jobId" property="jobId"/><result column="jobName" property="jobName"/><result column="jobDesc" property="jobDesc"/></collection></resultMap><!-- 根据条件分页查询 --><select id="findEmployeeByPageName" parameterType="employee" resultMap="EmployeeWithJobExtendDept">select employeeTable.*,jobTable.jobName,deptTable.deptNamefrom employeeTable,jobTable,deptTablewhere  jobTable.jobId = #{jobId}  and deptTable.deptId = #{deptId}and employeeTable.employeeName like '%${employeeName}%' and employeeTable.employeeCardId = #{employeeCardId} and employeeTable.employeePhone = #{employeePhone} and employeeTable.jobId = #{jobId} and employeeTable.deptId = #{deptId} and employeeTable.employeeSex = #{employeeSex}</select><!-- 点击查询全部员工信息 --><select id="findAllCount" resultType="java.lang.Integer">select count(*) from employeeTable</select><!-- 查询记录数 --><select id="findCount" parameterType="employee" resultType="java.lang.Integer">select count(*) from employeeTable,jobTable,deptTablewhere  jobTable.jobId = #{jobId}  and deptTable.deptId = #{deptId}and employeeTable.employeeName like '%${employeeName}%' and employeeTable.employeeCardId = #{employeeCardId} and employeeTable.employeePhone = #{employeePhone} and employeeTable.jobId = #{jobId} and employeeTable.deptId = #{deptId} and employeeTable.employeeSex = #{employeeSex}</select><!-- 员工、部门、职位 --><select id="findEmployeeByPage" resultMap="EmployeeWithJobExtendDept" parameterType="employee">select employeeTable.*,jobTable.jobName,deptTable.deptNamefrom employeeTable,jobTable,deptTablewhere employeeTable.jobId = jobTable.jobId and employeeTable.deptId = deptTable.deptId </select></mapper>

2. 创建EmployeeDao,和EmployeeDaoImpl

EmployeeDao.java

public interface EmployeeDao {public Page findEmployeeByPageName(int currentPage,Employee employee);   //按条件分页查询
}

EmployeeDaoImpl.java

public class EmployeeDaoImpl extends SqlSessionDaoSupport implements EmployeeDao {@Overridepublic Page findEmployeeByPageName(int currentPage, Employee employee) {SqlSession sqlSession = this.getSqlSession();Page pageIndex = new Page();                //实例化Page对象int countResult = 0;if(employee.getEmployeeName() == null || employee.getEmployeeName().equals("")){//查询employee中数据总数,或者符合条件的数据总数countResult = sqlSession.selectOne("employee.findAllCount");   }else if(employee.getEmployeeName() != null){//查询employee中数据总数,或者符合条件的数据总数countResult = sqlSession.selectOne("employee.findCount",employee);   }System.out.println("******总记录数:"+countResult);pageIndex.setTatalNums(countResult);           int totalPages = (pageIndex.getTatalNums() % pageIndex.PAGESIZE) == 0?pageIndex.getTatalNums() / pageIndex.PAGESIZE : (pageIndex.getTatalNums() / pageIndex.PAGESIZE)+1;pageIndex.setTotalPages(totalPages);  //总页数System.out.println("******总页数:"+totalPages);if(currentPage < 1 ||currentPage == 0){currentPage = 1;}else if(currentPage > totalPages){currentPage = totalPages;}System.out.println("当前页:"+currentPage);pageIndex.setCurrentPage(currentPage);int firstResult = (currentPage - 1) * pageIndex.PAGESIZE;System.out.println("起始行:"+firstResult);pageIndex.setFirstResult(firstResult);List deptList = null;// offset起始行 // limit是当前页显示多少条数据RowBounds rowBounds = new RowBounds(pageIndex.getFirstResult(), pageIndex.PAGESIZE); if(employee.getEmployeeName() == null || employee.getEmployeeName().equals("")){deptList = sqlSession.selectList("employee.findEmployeeByPage", employee, rowBounds);}else if(employee.getEmployeeName() != null){deptList = sqlSession.selectList("employee.findEmployeeByPageName", employee, rowBounds);   }pageIndex.setList(deptList);System.out.println("数据长度:"+deptList.size());return pageIndex;}}

3.创建EmployeeService和EmployeeServiceImpl

EmployeeService.java

public interface EmployeeService {public Page findEmployeeByPageName(int currentPage,Employee employee);   //按条件分页查询
}

EmployeeServiceImpl.java

public class EmployeeServiceImpl implements EmployeeService {@Autowiredprivate EmployeeDao employeeDao;@Overridepublic Page findEmployeeByPageName(int currentPage, Employee employee) {return employeeDao.findEmployeeByPageName(currentPage, employee);}}

4.EmployeeController控制器

具体实现员工分页查询,检索条件分页查询

@Controller
public class EmployeeController {@Autowiredprivate EmployeeService employeeService;@Autowiredprivate JobService jobService;@Autowiredprivate DeptService deptService;@RequestMapping("findEmployeeByPageName.action")public ModelAndView findEmployeeByPageName(int currentPage,Employee employee,ModelAndView mav,HttpServletRequest request){System.out.println("in EmployeeController method findEmployeeByPageName()");if(employee.getEmployeeName() != null){System.out.println("检索的员工姓名:"+employee.getEmployeeName());}request.setAttribute("empBack", employee);Page page = employeeService.findEmployeeByPageName(currentPage, employee);List<Dept> deptList = deptService.findAllDept();List<Job> jobList = jobService.findAllJob();request.setAttribute("page", page);request.setAttribute("deptList", deptList);request.setAttribute("jobList", jobList);mav.setViewName("jsp/employee/employeeList.jsp");return mav;}

5. jsp页面展示结果

<%@ page language="java" contentType="text/html; charset=UTF-8" import="com.su.util.*"pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="f" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>人事管理系统 ——员工管理</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="pragma" content="no-cache" /><meta http-equiv="cache-control" content="no-cache" /><meta http-equiv="expires" content="0" />    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3" /><meta http-equiv="description" content="This is my page" /><link href="${pageContext.request.contextPath}/css/css.css" type="text/css" rel="stylesheet" /><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/js/ligerUI/skins/Aqua/css/ligerui-dialog.css"/><link href="${pageContext.request.contextPath}/js/ligerUI/skins/ligerui-icons.css" rel="stylesheet" type="text/css" /><script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.11.0.js"></script><script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-migrate-1.2.1.js"></script><script src="${pageContext.request.contextPath}/js/ligerUI/js/core/base.js" type="text/javascript"></script><script src="${pageContext.request.contextPath}/js/ligerUI/js/plugins/ligerDrag.js" type="text/javascript"></script> <script src="${pageContext.request.contextPath}/js/ligerUI/js/plugins/ligerDialog.js" type="text/javascript"></script><script src="${pageContext.request.contextPath}/js/ligerUI/js/plugins/ligerResizable.jss" type="text/javascript"></script><link href="${pageContext.request.contextPath}/css/pager.css" type="text/css" rel="stylesheet" /><script type="text/javascript">function one(frm,num){ frm.currentPage.value=num;frm.submit();}function jump_to(frm,pageNo){var reg=/^\d+$/;if(!reg.test(pageNo)){alert("请输入正确数字");}else{  one(frm,pageNo);}}$(function(){/** 获取上一次选中的部门数据 */var boxs  = $("input[type='checkbox'][id^='box_']");/** 给全选按钮绑定点击事件  */$("#checkAll").click(function(){// this是checkAll  this.checked是true// 所有数据行的选中状态与全选的状态一致boxs.attr("checked",this.checked);})/** 给数据行绑定鼠标覆盖以及鼠标移开事件  */$("tr[id^='data_']").hover(function(){$(this).css("backgroundColor","#eeccff");},function(){$(this).css("backgroundColor","#ffffff");})/** 删除员工绑定点击事件 */$("#delete").click(function(){/** 获取到用户选中的复选框  */var checkedBoxs = boxs.filter(":checked");if(checkedBoxs.length < 1){$.ligerDialog.error("请选择一个需要删除的员工!");}else{/** 得到用户选中的所有的需要删除的ids */var ids = checkedBoxs.map(function(){return this.value;})$.ligerDialog.confirm("确认要删除吗?","删除员工",function(r){if(r){// alert("删除:"+ids.get());// 发送请求window.location = "${pageContext.request.contextPath}/removeEmployee.action?ids=" + ids.get();}});}})})</script>
</head>
<body><!-- 导航 --><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td height="10"></td></tr><tr><td width="15" height="32"><img src="${pageContext.request.contextPath}/images/main_locleft.gif" width="15" height="32"></td><td class="main_locbg font2"><img src="${pageContext.request.contextPath}/images/pointer.gif">&nbsp;&nbsp;&nbsp;当前位置:员工管理 &gt; 员工查询</td><td width="15" height="32"><img src="${pageContext.request.contextPath}/images/main_locright.gif" width="15" height="32"></td></tr></table><form name="empform0" method="post" id="empform0" action="${pageContext.request.contextPath}/findEmployeeByPageName.action"><table width="100%" height="90%" border="0" cellpadding="5" cellspacing="0" class="main_tabbor"><!-- 查询区  --><tr valign="top"><td height="30"><table width="100%" border="0" cellpadding="0" cellspacing="10" class="main_tab"><tr><td class="fftd"><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td class="font3">职位:<select name="jobId" style="width:143px;"><option value="${requestScope.empBack.jobId}">(默认值)</option><c:forEach items="${requestScope.jobList }" var="job"><option value="${job.jobId }">${job.jobName }</option></c:forEach></select>姓名:<input type="text" name="employeeName" value="${requestScope.empBack.employeeName}">身份证号码:<input type="text" name="employeeCardId" maxlength="18" value="${requestScope.empBack.employeeCardId}"></td></tr><tr><td class="font3">性别:<select name="employeeSex" style="width:143px;"><option value="${requestScope.empBack.employeeSex}">(默认值)</option><option value="男">男</option><option value="女">女</option></select>手机:<input type="text" name="employeePhone" value="${requestScope.empBack.employeePhone}">所属部门:<select  name="deptId" style="width:100px;"><option value="${requestScope.empBack.deptId}">(默认值)</option><c:forEach items="${requestScope.deptList }" var="dept"><option value="${dept.deptId }">${dept.deptName }</option></c:forEach></select>&nbsp;<input type="hidden" name="currentPage" value="1"><input type="submit" value="搜索"/><input id="delete" type="button" value="删除"/></td></tr></table></td></tr></table></td></tr><!-- 数据展示区 --><tr valign="top"><td height="20"><table width="100%" border="1" cellpadding="5" cellspacing="0" style="border:#c2c6cc 1px solid; border-collapse:collapse;"><tr class="main_trbg_tit" align="center"><td><input type="checkbox" name="checkAll" id="checkAll"></td><td>姓名</td><td>性别</td><td>手机号码</td><td>邮箱</td><td>职位</td><td>学历</td><td>身份证号码</td><td>部门</td><td>联系地址</td><td>建档日期</td><td align="center">操作</td></tr><c:forEach items="${requestScope.page.list}" var="employee" varStatus="stat"><tr id="data_${stat.index}" class="main_trbg" align="center"><td><input type="checkbox" id="box_${stat.index}" value="${employee.employeeId}"></td><td>${employee.employeeName }</td><td>${employee.employeeSex} </td><td>${employee.employeePhone }</td><td>${employee.employeeEmail }</td><td>${employee.job.jobName }</td><td>${employee.employeeEducation }</td><td>${employee.employeeCardId }</td><td>${employee.dept.deptName }</td><td>${employee.employeeAddress }</td><td><f:formatDate value="${employee.employeeCreateDate}" type="date" dateStyle="long"/></td><td align="center" width="40px;"><a href="${pageContext.request.contextPath}/updateEmployee.action?flag=1&employeeId=${employee.employeeId}"><img title="修改" src="${pageContext.request.contextPath}/images/update.gif"/></a></td></tr></c:forEach></table></td></tr><!-- 分页标签 --><tr valign="top"><td align="center" class="font3"><% Page pageOne = (Page)request.getAttribute("page"); %><% if(pageOne!=null) {for(int i=1;i<=pageOne.getTotalPages();i++){ %><a href="javascript:one(document.forms[0],<%=i%>)"><font size="3px"><%=i%>&nbsp;</font></a><% }} %><br>搜索结果共<font style="color:red">${page.tatalNums }</font>条&nbsp;当前页${page.currentPage}/共${page.totalPages}页<span>跳转至</span><input type="text" name="inputPage" id="inputPage" value="${page.currentPage}" style="width:30px;text-align:center;"/>页<input type="button" onclick="javascript:jump_to(document.forms[0],document.getElementById('inputPage').value)" value="GO"/></td></tr></table></form><div style="height:10px;"></div>
</body>
</html>

至此员工与部门、职位,关联分页查询已完成,供以后复习


Author:su1573

ssm项目---人事管理系统:员工与部门、职位实现一对一相关推荐

  1. java选修结课作业:ssm项目-人事管理系统-经验记录

    前端框架:Layui,jquery 数据库:MySQL 数据库连接池:c3p0 J2EE:Tomcat, Servlet, JSP, Filter 视图框架:Spring MVC ORM框架:MyBa ...

  2. JAVAJSPjavaweb企业员工考勤管理系统企业考勤管理(ssm企业人事管理系统)企业人事考勤系

    企业员工考勤管理系统企业考勤管理(ssm企业人事管理系统)企业人事考勤系 大家好,很高兴和大家分享Java项目和经验.不管同学们是出于什么需求.都希望各位计算机专业的同学有一个提高. 本系统采用ecl ...

  3. jsp管理系统页面模板_基于ssm的人事管理系统

    源码编号:D-E00016 点击查看(分类规则) 项目类型:Java EE项目(采用ssm框架) 项目名称:基于ssm的人事管理系统(hrmapp) 当前版本:V1.0.0版本 难度等级:✩✩ 复杂程 ...

  4. 计算机毕业设计之java+springboot基于vue的人事管理系统-员工管理系统

    计算机毕业设计之java+springboot基于vue的人事管理系统-员工管理系统 项目介绍 系统权限按管理员和员工这两类涉及用户划分. (a)管理员:管理员使用本系统涉到的功能主要有:首页,个人中 ...

  5. SSM项目--资产管理系统

    ssm项目--资产管理系统 这篇博客是上一篇SSH的姊妹篇,同一个项目的不同实现框架,可以比对一下,比较SSH和SSM的整合的异同和流程. 目录 说明 项目的结构 配置web.xml 配置spring ...

  6. SSM整合项目人事管理系统改(2)——需求分析和数据库表结构设计

    参考<Spring+MyBatis企业应用实战>(以后称原书)可以知道人事管理系统分为6个模块以及各种实现的功能为: 1.用户管理:CRUD用户: 2.部门管理:CRUD部门: 3.员工管 ...

  7. Java毕设项目——人事管理系统(java+SSM+Maven+Mysql+Jsp)

    文末获取源码 开发语言:Java 框架:SSM 技术:Jsp JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclip ...

  8. SSM整合项目人事管理系统改(1)——启动项目

       动机 之前一直都是从网上看视频学的SSM三大框架,但只是快速过了一下,很多东西都没学好,写简历的时候只敢写了解(笑),趁毕业前还有段时间,想再回顾一下三个框架的知识,也翻一翻买了好久的书. 这个 ...

  9. Springboot+vue项目人事管理系统

    开发语言:Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:springboot+vue JDK版本:jdk1.8 文末获取 ...

最新文章

  1. python pyppeteer自定义chromium目录
  2. 知识图谱学习笔记-风控知识图谱设计
  3. GitHub 标星 5000+!学生党学编程,有这份资料就够了!
  4. Java WEB之Servlet学习之路(一)一个最简单的Servlet应用
  5. android 打开支付宝扫码页_Chrome 85正式版发布:新增标签页分组功,网页多了也不乱...
  6. Exception in thread “main“ java.lang.IllegalStateException: Duplicate key xxx
  7. 北海计算机职称考试地点,【2017年广西北海职称计算机考试报名时间9月1日-5日】- 环球网校...
  8. html5 session 缓存,关于HTML5中的sessionStorage的会话级缓存使用
  9. Application.messagebox对话框样式
  10. [导入]CLR探索系列:Server and Workstation Garbage Collection探索(垃圾回收系列)
  11. Linux下手机驱动安装
  12. 单片机破解的常用方法及应对策略
  13. 实现一个数据流中,随时可以取得中位数
  14. 模电数电EDA实验开发系统实验设备QY-MS301D
  15. 成都拓嘉启远:拼多多上产品清单的条件
  16. 在vue中使用鼠标事件@mousedown、@mouseenter等失效的解决办法,以及PC端长按实现
  17. INSEC WORLD:世界信息安全西望成都
  18. 为什么许多芯片的CS信号(片选信号)经常都是低电平有效?
  19. Python--让我们秀翻算法中的二进制
  20. 安全威胁无孔不入:基于Linux系统的病毒(转)

热门文章

  1. java dump文件分析
  2. 上海数据交易中心成立 全国多地力推大数据产业
  3. GBK和UTF8之间的转换 C语言
  4. 状态寄存器传送指令 —— 访问(读写)CPSR寄存器
  5. IDF实验室-伟人的名字
  6. 用懊悔法学习吴恩达机器学习【2】-----线性回归的梯度下降
  7. java验证歌德巴赫猜想
  8. 人民日报关于996的这段【内容引起极度舒适】!
  9. JzxxOJ Problem 4209: 寻找雷劈数 题解
  10. Dagger2使用解析