准备阶段
1、全局的日期配置
@Component
public class DateConverter implements Converter<String, LocalDate> {
@Override
public LocalDate convert(String source) {
try {
return LocalDate.parse(source, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}catch (Exception e){
RespBean.error("日期格式不正确,请你检查日期格式");
}
return null;
}
}
2、实体类的日期字段
@ApiModelProperty(value = "出生日期")
//每个日期加上JSonFormat格式
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private LocalDate birthday;
3、数据库表存在外键如何处理
@ApiModelProperty(value = "民族")
@TableField(exist = false) #数据库不包括的字段
private Nation nation;
@ApiModelProperty(value = "政治面貌")
@TableField(exist = false) #数据库不包括的字段
private PoliticsStatus politicsStatus;
@ApiModelProperty(value = "部门")
@TableField(exist = false) #数据库不包括的字段
private Department department;
@ApiModelProperty(value = "职称")
@TableField(exist = false) #数据库不包括的字段
private Joblevel joblevel;
@ApiModelProperty(value = "职位")
@TableField(exist = false) #数据库不包括的字段
private Position position;
实践阶段
Controller层
@ApiOperation(value = "获取所有的用户信息(分页)")
@GetMapping("/")
public RespPageBean getEmployee(@RequestParam(value = "offset",defaultValue = "1")Integer offset,
@RequestParam(value ="pagesize",defaultValue = "10")Integer pagesize,
Employee employee, LocalDate[] beginDateScpe){
return this.employeeService.getEmployeeByPage(offset,pagesize,employee,beginDateScpe);
}
Service层
/**
* 获取所有员工(分页)
* @param offset
* @param pagesize
* @param employee
* @param beginDateScpe
* @return
*/
@Override
public RespPageBean getEmployeeByPage(Integer offset, Integer pagesize, Employee employee, LocalDate[] beginDateScpe) {
//开启分页
Page<Employee> page=new Page<>(offset,pagesize);
IPage<Employee> employeeByPage = this.employeeMapper.getEmployeeByPage(page, employee, beginDateScpe);
//获取用户所有分页
RespPageBean respPageBean=new RespPageBean(employeeByPage.getTotal(),employeeByPage.getRecords());
return respPageBean;
}
Mapper接口
<?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="com.example.clould.mapper.EmployeeMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.example.clould.entity.Employee">
<result column="id" property="id" />
<result column="name" property="name" />
<result column="gender" property="gender" />
<result column="birthday" property="birthday" />
<result column="idCard" property="idcard" />
<result column="wedlock" property="wedlock" />
<result column="nationId" property="nationid" />
<result column="nativePlace" property="nativeplace" />
<result column="politicId" property="politicid" />
<result column="email" property="email" />
<result column="phone" property="phone" />
<result column="address" property="address" />
<result column="departmentId" property="departmentid" />
<result column="jobLevelId" property="joblevelid" />
<result column="posId" property="posid" />
<result column="engageForm" property="engageform" />
<result column="tiptopDegree" property="tiptopdegree" />
<result column="specialty" property="specialty" />
<result column="school" property="school" />
<result column="beginDate" property="begindate" />
<result column="workState" property="workstate" />
<result column="workID" property="workid" />
<result column="contractTerm" property="contractterm" />
<result column="conversionTime" property="conversiontime" />
<result column="notWorkDate" property="notworkdate" />
<result column="beginContract" property="begincontract" />
<result column="endContract" property="endcontract" />
<result column="workAge" property="workage" />
<result column="salaryId" property="salaryid" />
</resultMap>
<resultMap id="EmployeeInfo" type="com.example.clould.entity.Employee" extends="BaseResultMap">
<association property="nationid" javaType="com.example.clould.entity.Nation">
<id column="nid" property="id"></id>
<result column="nname" property="name"></result>
</association>
<association property="politicsStatus" javaType="com.example.clould.entity.PoliticsStatus">
<id column="pid" property="id"></id>
<result column="pname" property="name"></result>
</association>
<association property="department" javaType="com.example.clould.entity.Department">
<id column="did" property="id"></id>
<result column="dname" property="name"></result>
</association>
<association property="joblevel" javaType="com.example.clould.entity.Joblevel">
<id column="jid" property="id"></id>
<result column="jname" property="name"></result>
</association>
<association property="position" javaType="com.example.clould.entity.Position">
<id column="posid" property="id"></id>
<result column="posname" property="name"></result>
</association>
</resultMap>
<!-- 获取所有员工(分页)-->
<select id="getEmployeeByPage" resultMap="EmployeeInfo">
SELECT
e.*, n.id AS nid,
n. NAME AS nname,
p.id AS pid,
p. NAME AS pname,
d.id AS did,
d. NAME dname,
j.id jid,
j. NAME jname,
pos.id posId,
pos. NAME posname
FROM
t_employee e,
t_nation n,
t_politics_status p,
t_department d,
t_joblevel j,
t_position pos
WHERE
e.nationId = n.id
AND e.politicId = p.id
AND e.departmentId = d.id
AND e.jobLevelId = j.id
AND e.posId = pos.id
#查询条件
<if test="null!=employee.name and ''!=employee ">
AND e. NAME LIKE CONCAT('%', #{employee.name}, '%')
</if>
<if test="null!=employee.politicid">
AND e.politicId = #{employee.politicid}
</if>
<if test="null!=employee.nationid">
AND e.nationId = #{employee.nationid}
</if>
<if test="null!=employee.joblevelid">
AND e.jobLevelId = #{employee.joblevelid}
</if>
<if test="null!=employee.posid">
AND e.posId = #{employee.posid}
</if>
<if test="null!=employee.engageform and ''!=employee.engageform ">
AND e.engageform = #{employee.engageform}
</if>
<if test="null!=employee.beginDateScpe and 2==beginDateScpe.length">
AND e.beginDate BETWEEN #{beginDateScpe[0]}
AND #{beginDateScpe[1]}
</if>
ORDER BY
e.id
</select>
</mapper>
测试阶段
接口测试