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