MyBatis 员工管理系统:使用 Mapper 接口实现增删改查、统计和高级查询
"使用MyBatis的Mapper接口开发完成以下功能:\n1.查询所有员工信息\n2.新增一名员工信息\n3.根据员工编号修改员工信息\n4.根据员工编号删除员工信息\n5.根据性别分组统计平均薪资\n6.查询入职时间在最近一年的员工信息\n7.查询入职两年到三年之间员工的最高薪资和最低薪资的员工信息\n8.查询年龄为25岁的员工中最高薪资的员工信息\n\n首先,我们需要创建一个员工实体类,包含以下字段:\n\njava\npublic class Employee {\n private Integer id;\n private String employeeNo;\n private String employeeName;\n private String gender;\n private Integer age;\n private String hometown;\n private Date hireDate;\n private Double salary;\n \n // 省略getter和setter方法\n}\n\n\n接下来,我们需要创建一个Mapper接口,定义对员工表的操作:\n\njava\npublic interface EmployeeMapper {\n List<Employee> findAllEmployees();\n \n void insertEmployee(Employee employee);\n \n void updateEmployee(Employee employee);\n \n void deleteEmployee(String employeeNo);\n \n Double findAverageSalaryByGender(String gender);\n \n List<Employee> findEmployeesByHireDate(Date startDate, Date endDate);\n \n List<Employee> findEmployeesByYears(int startYear, int endYear);\n \n Employee findMaxSalaryEmployeeByAge(int age);\n}\n\n\n然后,我们需要创建一个Mapper XML文件,实现Mapper接口定义的方法:\n\nxml\n<!-- EmployeeMapper.xml -->\n<mapper namespace="com.example.mapper.EmployeeMapper">\n <select id="findAllEmployees" resultType="com.example.model.Employee">\n SELECT * FROM employee\n </select>\n \n <insert id="insertEmployee" parameterType="com.example.model.Employee">\n INSERT INTO employee (employeeNo, employeeName, gender, age, hometown, hireDate, salary) \n VALUES (#{employeeNo}, #{employeeName}, #{gender}, #{age}, #{hometown}, #{hireDate}, #{salary})\n </insert>\n \n <update id="updateEmployee" parameterType="com.example.model.Employee">\n UPDATE employee SET employeeNo = #{employeeNo}, employeeName = #{employeeName}, gender = #{gender},\n age = #{age}, hometown = #{hometown}, hireDate = #{hireDate}, salary = #{salary}\n WHERE id = #{id}\n </update>\n \n <delete id="deleteEmployee" parameterType="String">\n DELETE FROM employee WHERE employeeNo = #{employeeNo}\n </delete>\n \n <select id="findAverageSalaryByGender" resultType="Double">\n SELECT AVG(salary) FROM employee WHERE gender = #{gender}\n </select>\n \n <select id="findEmployeesByHireDate" resultType="com.example.model.Employee">\n SELECT * FROM employee WHERE hireDate BETWEEN #{startDate} AND #{endDate}\n </select>\n \n <select id="findEmployeesByYears" resultType="com.example.model.Employee">\n SELECT * FROM employee WHERE YEAR(hireDate) BETWEEN #{startYear} AND #{endYear}\n </select>\n \n <select id="findMaxSalaryEmployeeByAge" resultType="com.example.model.Employee">\n SELECT * FROM employee WHERE age = #{age} ORDER BY salary DESC LIMIT 1\n </select>\n</mapper>\n\n\n最后,我们可以在Java代码中使用Mapper接口进行数据库操作:\n\njava\npublic class EmployeeService {\n private SqlSessionFactory sqlSessionFactory;\n \n public EmployeeService() {\n // 初始化SqlSessionFactory\n InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");\n sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);\n }\n \n public List<Employee> findAllEmployees() {\n try (SqlSession session = sqlSessionFactory.openSession()) {\n EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);\n return mapper.findAllEmployees();\n }\n }\n \n public void insertEmployee(Employee employee) {\n try (SqlSession session = sqlSessionFactory.openSession()) {\n EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);\n mapper.insertEmployee(employee);\n session.commit();\n }\n }\n \n public void updateEmployee(Employee employee) {\n try (SqlSession session = sqlSessionFactory.openSession()) {\n EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);\n mapper.updateEmployee(employee);\n session.commit();\n }\n }\n \n public void deleteEmployee(String employeeNo) {\n try (SqlSession session = sqlSessionFactory.openSession()) {\n EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);\n mapper.deleteEmployee(employeeNo);\n session.commit();\n }\n }\n \n public Double findAverageSalaryByGender(String gender) {\n try (SqlSession session = sqlSessionFactory.openSession()) {\n EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);\n return mapper.findAverageSalaryByGender(gender);\n }\n }\n \n public List<Employee> findEmployeesByHireDate(Date startDate, Date endDate) {\n try (SqlSession session = sqlSessionFactory.openSession()) {\n EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);\n return mapper.findEmployeesByHireDate(startDate, endDate);\n }\n }\n \n public List<Employee> findEmployeesByYears(int startYear, int endYear) {\n try (SqlSession session = sqlSessionFactory.openSession()) {\n EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);\n return mapper.findEmployeesByYears(startYear, endYear);\n }\n }\n \n public Employee findMaxSalaryEmployeeByAge(int age) {\n try (SqlSession session = sqlSessionFactory.openSession()) {\n EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);\n return mapper.findMaxSalaryEmployeeByAge(age);\n }\n }\n}\n\n\n以上就是使用MyBatis的Mapper接口完成对员工表的操作的示例代码。请根据实际情况修改数据库连接配置和SQL语句。在使用时间类型进行比较时,可以使用BETWEEN关键字或者>、<等运算符进行比较。具体的SQL语句可根据实际需求进行调整。\n
原文地址: https://www.cveoy.top/t/topic/pZ9A 著作权归作者所有。请勿转载和采集!