xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bjsxt.mapper.EmployeeMapper"><select id="selbyemptype" parameterType="int" resultType="Employee">select * from employee where emptype=#{empType}</select><resultMap type="Employee" id="selAll"><id property="empId" column="empid"/><result property="realName" column="realname"/><result property="sex" column="sex"/><result property="hireDate" column="hiredate"/><result property="phone" column="phone"/><collection property="mgr" ofType="Employee"><id property="empId" column="mgrId"/><result property="realName" column="realname"/></collection><collection property="position"  ofType="position"><id property="posid" column="posid"/><result property="pname" column="pname"/>    </collection><collection property="dept" ofType="Department"><id property="deptno" column="deptno"/><result property="deptname" column="deptname"/></collection></resultMap><select id="selAll" resultMap="selAll">select e.empid,e.realname,e.sex,e.hiredate,e.phone,d.deptname,p.pname,e2.realnamefrom employee e left join dept d on e.deptno=d.deptno left join position p on e.posid=p.posidleft join employee e2 on e.mgrid=e2.empidorder by e.empid</select>
</mapper>

实体类:

package com.bjsxt.entity;import java.util.ArrayList;
import java.util.Date;
import java.util.List;/*** 员工类* * 如何表示员工所属一个部门、一个岗位、一个上级、甚至多个下级的信息呢?* 在数据库中通过外键来实现:deptno、posid,mgrid* 在Java类中通过属性关联来实现* * private Department dept; //员工所属部门  不仅包含部门的编号,还包含其他信息private Position position;private Employee mgr;//上级领导的信息private List<Employee> empList = new ArrayList<Employee>();//下级的信息,可能多个* @author Administrator**/
public class Employee {private String empId;//员工编号private String password;//密码private String realName;//真实姓名private String sex;//性别private Date birthDate;//出生日期private Date hireDate;//入职日期private Date leaveDate;//离职日期private int onDuty;//是否在职  0-离职  1-在职  private int  empType;//员工类型  1.普通员工  2.管理人员 含经理、总监、总裁等  3.管理员private String phone;//联系方式private String qq;private String emerContactPerson;//紧急联系人信息private String idCard;//身份证号码/*private int deptno;private int posId;private String mgrId;*/private Department dept; //员工所属部门  不仅包含部门的编号,还包含其他信息private Position position;private Employee mgr;//上级领导的信息private List<Employee> empList = new ArrayList<Employee>();//下级的信息,可能多个public Employee() {super();}public Employee(String empId, String password, String realName, String sex,Date birthDate, Date hireDate, Date leaveDate, int onDuty,int empType, String phone, String qq, String emerContactPerson,String idCard, Department dept, Position position, Employee mgr) {super();this.empId = empId;this.password = password;this.realName = realName;this.sex = sex;this.birthDate = birthDate;this.hireDate = hireDate;this.leaveDate = leaveDate;this.onDuty = onDuty;this.empType = empType;this.phone = phone;this.qq = qq;this.emerContactPerson = emerContactPerson;this.idCard = idCard;this.dept = dept;this.position = position;this.mgr = mgr;}public Employee(String empId, String password, String realName, String sex,Date birthDate, Date hireDate, Date leaveDate, int onDuty,int empType, String phone, String qq, String emerContactPerson,String idCard, Department dept, Position position, Employee mgr,List<Employee> empList) {super();this.empId = empId;this.password = password;this.realName = realName;this.sex = sex;this.birthDate = birthDate;this.hireDate = hireDate;this.leaveDate = leaveDate;this.onDuty = onDuty;this.empType = empType;this.phone = phone;this.qq = qq;this.emerContactPerson = emerContactPerson;this.idCard = idCard;this.dept = dept;this.position = position;this.mgr = mgr;this.empList = empList;}public String getEmpId() {return empId;}public void setEmpId(String empId) {this.empId = empId;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getRealName() {return realName;}public void setRealName(String realName) {this.realName = realName;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Date getBirthDate() {return birthDate;}public void setBirthDate(Date birthDate) {this.birthDate = birthDate;}public Date getHireDate() {return hireDate;}public void setHireDate(Date hireDate) {this.hireDate = hireDate;}public Date getLeaveDate() {return leaveDate;}public void setLeaveDate(Date leaveDate) {this.leaveDate = leaveDate;}public int getOnDuty() {return onDuty;}public void setOnDuty(int onDuty) {this.onDuty = onDuty;}public int getEmpType() {return empType;}public void setEmpType(int empType) {this.empType = empType;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getQq() {return qq;}public void setQq(String qq) {this.qq = qq;}public String getEmerContactPerson() {return emerContactPerson;}public void setEmerContactPerson(String emerContactPerson) {this.emerContactPerson = emerContactPerson;}public String getIdCard() {return idCard;}public void setIdCard(String idCard) {this.idCard = idCard;}public Department getDept() {return dept;}public void setDept(Department dept) {this.dept = dept;}public Position getPosition() {return position;}public void setPosition(Position position) {this.position = position;}public Employee getMgr() {return mgr;}public void setMgr(Employee mgr) {this.mgr = mgr;}public List<Employee> getEmpList() {return empList;}public void setEmpList(List<Employee> empList) {this.empList = empList;}@Overridepublic String toString() {return "Employee [empId=" + empId + ", password=" + password+ ", realName=" + realName + ", sex=" + sex + ", birthDate="+ birthDate + ", hireDate=" + hireDate + ", leaveDate="+ leaveDate + ", onDuty=" + onDuty + ", empType=" + empType+ ", phone=" + phone + ", qq=" + qq + ", emerContactPerson="+ emerContactPerson + ", idCard=" + idCard + ", dept=" + dept+ ", position=" + position + ", mgr=" + mgr + ", empList="+ empList + "]";}}

Mapper接口:

package com.bjsxt.mapper;import java.util.List;import com.bjsxt.entity.Employee;public interface EmployeeMapper {List<Employee> selbyemptype(int empType);List<Employee> selAll();
}

service方法:

package com.bjsxt.service.impl;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.bjsxt.dao.EmployeeDao;
import com.bjsxt.dao.impl.EmployeeDaoImpl;
import com.bjsxt.entity.Employee;
import com.bjsxt.mapper.EmployeeMapper;
import com.bjsxt.service.EmployeeService;
import com.bjsxt.util.MyBatisUtil;public class EmployeeServiceImpl implements EmployeeService{private EmployeeDao empDao = new EmployeeDaoImpl();SqlSession session = MyBatisUtil.getSession();EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);@Overridepublic int add(Employee emp) {return this.empDao.save(emp);}@Overridepublic List<Employee> findEmpByType(int i) {List<Employee> selbyemptype = mapper.selbyemptype(i);session.close();return selbyemptype;}@Overridepublic List<Employee> selAll() {List<Employee> selAll = mapper.selAll();session.close();return selAll;}}

service接口:

package com.bjsxt.service;import java.util.List;import com.bjsxt.entity.Employee;public interface EmployeeService {/*** 添加员工* @param emp* @return*/public int add(Employee emp);/*** 查询指定类型的员工* @param i* @return*/public List<Employee> findEmpByType(int i);List<Employee> selAll();}

Servlet实现类:

package com.bjsxt.servlet;import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.bjsxt.entity.Department;
import com.bjsxt.entity.Employee;
import com.bjsxt.entity.Position;
import com.bjsxt.service.DepartmentService;
import com.bjsxt.service.EmployeeService;
import com.bjsxt.service.PositionService;
import com.bjsxt.service.impl.DepartmentServiceImpl;
import com.bjsxt.service.impl.EmployeeServiceImpl;
import com.bjsxt.service.impl.PositionServiceImol;public class EmployeeServlet extends BaseServlet {public void selinfo(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { String empid = request.getParameter("empId");String deptno = request.getParameter("deptno");System.out.println("=============="+deptno);String shireDate = request.getParameter("hireDate");String onduty = request.getParameter("onDuty");DateFormat df=new SimpleDateFormat("yyyy-MM-dd");Date hiredate =null;try {hiredate = df.parse(shireDate);} catch (ParseException e) {e.printStackTrace();}//获取所有的部门信息DepartmentService ds=new DepartmentServiceImpl();List<Department> deptList = ds.seAll();request.setAttribute("deptList", deptList);EmployeeService es = new EmployeeServiceImpl();List<Employee> selAll = es.selAll();request.setAttribute("empid", empid);request.setAttribute("deptno", deptno);request.setAttribute("onduty", onduty);request.setAttribute("hireDate", shireDate);request.setAttribute("selAll", selAll);request.getRequestDispatcher("/system/empList.jsp").forward(request, response);}public void selAll(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {  //获取所有的部门信息DepartmentService ds=new DepartmentServiceImpl();List<Department> deptList = ds.seAll();request.setAttribute("deptList", deptList);EmployeeService es = new EmployeeServiceImpl();List<Employee> selAll = es.selAll();request.setAttribute("selAll", selAll);request.getRequestDispatcher("/system/empList.jsp").forward(request, response);}public void findsth(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//获取所有的部门信息DepartmentService ds=new DepartmentServiceImpl();List<Department> seAll = ds.seAll();request.setAttribute("seAll", seAll);//获取所有的岗位信息PositionService ps=new PositionServiceImol();List<Position> selpos = ps.selpos();request.setAttribute("selpos", selpos);//获取上级员工EmployeeService empService = new EmployeeServiceImpl();List<Employee> mgrList = empService.findEmpByType(2);//1  基层员工  2 各级管理人员request.setAttribute("mgrList",mgrList);//跳转到system/empAdd.jsprequest.getRequestDispatcher("/system/empAdd.jsp").forward(request, response);}public void add(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//获取员工的信息String empId = request.getParameter("empId");String password ="123456";String realName = request.getParameter("realName");String sex = request.getParameter("sex");//日期类型的处理String sbirthDate = request.getParameter("birthDate");String shireDate = request.getParameter("hireDate");String sleaveDate = request.getParameter("leaveDate");Date birthDate= null,hireDate = null,leaveDate = null;DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {birthDate = sdf.parse(sbirthDate);} catch (ParseException e) {e.printStackTrace();}try {hireDate = sdf.parse(shireDate);} catch (ParseException e) {e.printStackTrace();}try {leaveDate = sdf.parse(sleaveDate);} catch (ParseException e) {System.out.println("暂时没有离职日期~");}//整数的处理int onDuty = Integer.parseInt(request.getParameter("onDuty"));int empType = Integer.parseInt(request.getParameter("empType"));String phone = request.getParameter("phone");String qq = request.getParameter("qq");String emerContactPerson = request.getParameter("emerContactPerson");String idCard = request.getParameter("idCard");//对象的处理int deptno = Integer.parseInt(request.getParameter("deptno"));Department dept = new Department();dept.setDeptno(deptno);int posid = Integer.parseInt(request.getParameter("posid"));Position position=new Position();position.setPosid(posid);String mgrId = request.getParameter("mgrId");Employee mgr = new Employee();mgr.setEmpId(mgrId);//!!!//调用业务层完成添加操作Employee emp = new Employee(empId, password, realName, sex, birthDate, hireDate, leaveDate, onDuty, empType, phone, qq, emerContactPerson, idCard, dept, position, mgr);EmployeeService  empService = new EmployeeServiceImpl();int n = empService.add(emp);//根据结果进行页面跳转if(n>0){response.sendRedirect(request.getContextPath()+"/system/empList.jsp");}else{request.setAttribute("error", "添加员工失败");request.getRequestDispatcher("/system/empAdd.jsp").forward(request, response);}}}

实现效果:

OA项目之Mybatis多表链接查询相关推荐

  1. springboot项目中mybatis实现数据的基本查询

    SpringBoot项目中mybatis实现数据的基本查询 本章内容概述: mapper 查询 xml 文件基本使用 通过 mybatis 实现一条数据的查询 1 用户数据表 2 用户信息对应的实体类 ...

  2. 项目开发一般流程、入职流程、尚学堂OA项目01_基础环境搭建、人事管理模块搭建、Servlet的高级封装

    项目开发一般流程.入职流程.尚学堂OA项目01 1. 项目开发的一般流程 2. 入职时工作的一般流程 3. 尚学堂办公自动化系统/OA 3.1 项目介绍 3.2 项目资料 3.3 项目开发 3.3.1 ...

  3. java毕业设计OA办公系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计OA办公系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计OA办公系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  4. OA项目12:系统管理之用户管理

    首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 之前在第8节时已经将User实体及映射文件建立好了,所 ...

  5. 源码解读Mybatis List列表In查询实现的注意事项

    http://www.blogjava.net/xmatthew/archive/2011/08/31/355879.html 在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Myba ...

  6. 【Mybatis】MyBatis 实现多表查询

    大纲 Auto Mapping 单表实现(别名方式) <resultMap>实现单表配置 单个对象关联查询(N+1,外连接) 集合对象关联查询 注解开发 MyBatis 运行原理 准备:创 ...

  7. OA项目10:部门管理的三个细节问题的解决及处理懒加载问题

    首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 部门管理遗留三个细节问题,及其处理方法: 1.当选择了 ...

  8. MyBatis 实现多表查询、resultMap 标签、MyBatis 注解、mybatis运行原理

    内容 Auto Mapping 单表实现(别名方式) 实现单表配置 单个对象关联查询(N+1,外连接) 集合对象关联查询 注解开发 MyBatis 运行原理 一.MyBatis 实现多表查询 Myba ...

  9. OA项目5:系统管理之岗位管理

    首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 设计实体和表 1.建立javabean,建立角色类Ro ...

  10. 会议OA项目(三)---我的会议(会议排座、送审)

    目录 前言 一.需求分析 二.准备工作 三.编码 1.后台编码 2.前端编码 四.效果展示 前言 上篇分享了会议OA项目的我的会议功能的查询.取消会议.本篇文章将完善我的会议功能. 我的会议功能有一个 ...

最新文章

  1. 生信和植物领域最新资讯合集
  2. 【重磅】Waymo无人车高层组团出走?CFO今日也走了!
  3. initrd映像文档的作用和制作
  4. 新手學python之新體驗
  5. java桥接和装饰_设计模式:桥接模式和装饰模式
  6. python代替javascript_Pyjamas - 用python代替javascript编写基于浏览器的应用
  7. 【Kafka】kafka无法查看消费组消费信息,其他相关组件正常
  8. 开启Windows文件共享必须开启的两个服务
  9. oracle按照时间点回退,【Oracle】查看事务回滚的时间
  10. 实验1-5 输出菱形图案 (5 分)
  11. 【OPPO主题制作系列 - 01】-- 写个小工具自动打包Theme文件
  12. 2017年10月份计算机网络管理,2017年下半年网络管理员考试上午试题及答案
  13. 数据结构试卷错题详细分析
  14. 项目实施过程中的标志性事件——里程碑
  15. win10 .Net Runtime Optimization Service占用大量CPU资源解决方法
  16. EXCEL 合并同样格式的多个excel文件
  17. 虚拟机linux ecap文件在,为AM335x移植Linux内核主线代码(30)eCAP的PWM波功能
  18. 阿里云acp认证, 阿里云acp考试介绍
  19. 基本算法的设计与实现-史莱姆通话
  20. Android系统编译小总结

热门文章

  1. ELK企业内部日志分析系统(elasticsearch/logstash/beats/kibana)centos7详解
  2. 页面打印不全怎么办html css,win7打印网页显示不全怎么办|win7设置网页打印页面的方法...
  3. HttpPrinter-网页打印控件
  4. AJAX聊天室实现原理 JQuery+PHP 【转】
  5. delphi清除ie缓存的方法
  6. 计算机组装有哪些,教你组装电脑主要配置有哪些
  7. 华为服务器显示器蓝屏怎么办,华为交换下误接TP-LINK交换导致监控画面蓝屏的解决方案...
  8. 7-1 厘米换算英尺英寸*宅家第一天
  9. php定义一个矩形类rectangle,Python3面向对象—点和矩形类
  10. 安装AD软件后,无法打开PCB,打开后一直提示advpcb.dll丢失,然后一直是停不下来的滚动条,解决方法。