MyBatis员工管理系统:使用Mapper接口实现CRUD和数据统计
{"title":"新建员工表包含一下字段:\n员工编号,员工姓名,员工性别,员工年龄,员工籍贯,入职时间,薪资\n\n使用mybatis的mapper接口开发完成以下功能:\n1.查询所有员工信息\n2.新增一名员工信息\n3.根据员工编号修改员工信息\n4.根据员工编号删除员工信息\n5.根据性别分组统计平均薪资\n6.查询入职时间在最近一年的员工信息\n7.查询入职两年到三年之间员工的最高薪资和最低薪资的员工信息\n8.查询年龄为25岁的员工中最高薪资的员工信息\n\nPS:关于时间的操作请自己查询相关资料。搜索内容:mybatis时间类型比较内容:首先,需要创建一个员工表,包含以下字段:\n\nsql\nCREATE TABLE employees (\n emp_id INT PRIMARY KEY,\n emp_name VARCHAR(50),\n emp_gender VARCHAR(10),\n emp_age INT,\n emp_native VARCHAR(50),\n hire_date DATE,\n salary DECIMAL(10,2)\n);\n\n\n接下来,创建一个员工实体类Employee,包含与表对应的字段,并提供getter和setter方法。\n\n然后,创建一个员工的Mapper接口EmployeeMapper,定义以下方法:\n\njava\npublic interface EmployeeMapper {\n // 查询所有员工信息\n List<Employee> getAllEmployees();\n\n // 新增一名员工信息\n void addEmployee(Employee employee);\n\n // 根据员工编号修改员工信息\n void updateEmployee(Employee employee);\n\n // 根据员工编号删除员工信息\n void deleteEmployee(int empId);\n\n // 根据性别分组统计平均薪资\n List<EmployeeAvgSalary> getAvgSalaryByGender();\n\n // 查询入职时间在最近一年的员工信息\n List<Employee> getEmployeesWithinOneYear();\n\n // 查询入职两年到三年之间员工的最高薪资和最低薪资的员工信息\n List<Employee> getEmployeesWithinTwoToThreeYears();\n\n // 查询年龄为25岁的员工中最高薪资的员工信息\n Employee getHighestSalaryEmployeeByAge(int age);\n}\n\n\n注意,根据性别分组统计平均薪资的方法中,返回的结果集使用了一个辅助类EmployeeAvgSalary,该类包含两个字段:性别和平均薪资。\n\n接下来,创建一个EmployeeMapper的XML映射文件,配置各个方法的SQL语句。以下是一个示例:\n\nxml\n<mapper namespace="com.example.mapper.EmployeeMapper">\n\n <resultMap id="employeeResultMap" type="com.example.model.Employee">\n <id property="empId" column="emp_id"/>\n <result property="empName" column="emp_name"/>\n <result property="empGender" column="emp_gender"/>\n <result property="empAge" column="emp_age"/>\n <result property="empNative" column="emp_native"/>\n <result property="hireDate" column="hire_date"/>\n <result property="salary" column="salary"/>\n </resultMap>\n\n <select id="getAllEmployees" resultMap="employeeResultMap">\n SELECT * FROM employees\n </select>\n\n <insert id="addEmployee">\n INSERT INTO employees(emp_id, emp_name, emp_gender, emp_age, emp_native, hire_date, salary)\n VALUES(#{empId}, #{empName}, #{empGender}, #{empAge}, #{empNative}, #{hireDate}, #{salary})\n </insert>\n\n <update id="updateEmployee">\n UPDATE employees SET emp_name = #{empName}, emp_gender = #{empGender}, emp_age = #{empAge},\n emp_native = #{empNative}, hire_date = #{hireDate}, salary = #{salary}\n WHERE emp_id = #{empId}\n </update>\n\n <delete id="deleteEmployee">\n DELETE FROM employees WHERE emp_id = #{empId}\n </delete>\n\n <select id="getAvgSalaryByGender" resultType="com.example.model.EmployeeAvgSalary">\n SELECT emp_gender, AVG(salary) AS avg_salary\n FROM employees\n GROUP BY emp_gender\n </select>\n\n <select id="getEmployeesWithinOneYear" resultMap="employeeResultMap">\n SELECT * FROM employees\n WHERE hire_date >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)\n </select>\n\n <select id="getEmployeesWithinTwoToThreeYears" resultMap="employeeResultMap">\n SELECT * FROM employees\n WHERE hire_date >= DATE_SUB(CURDATE(), INTERVAL 3 YEAR)\n AND hire_date < DATE_SUB(CURDATE(), INTERVAL 2 YEAR)\n </select>\n\n <select id="getHighestSalaryEmployeeByAge" resultMap="employeeResultMap">\n SELECT *\n FROM employees\n WHERE emp_age = #{age}\n ORDER BY salary DESC\n LIMIT 1\n </select>\n\n</mapper>\n\n\n最后,在Spring Boot中配置MyBatis,创建EmployeeMapper的实例,并使用该实例调用各个方法即可完成相应的功能。\n\n参考资料:\n- MyBatis官方文档\n- Spring Boot中使用MyBatis的官方指南}
原文地址: https://www.cveoy.top/t/topic/pZ9L 著作权归作者所有。请勿转载和采集!