配置类
package com.xxxx.server.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Mybaits分页配置
*/
@Configuration
public class MyBatisPlusConfig {
//在查询时会拦截sql语句并把分页语句加上
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
实体封装
package com.xxxx.server.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 分页公共返回对象
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RespPageBean {
/**
* 总条数
*/
private Long total;
/**
* 数据list
*/
private List<?> data;
}
controller
@GetMapping("/")
public RespPageBean getEmployee(@RequestParam(defaultValue = "1") Integer currentPage,
@RequestParam(defaultValue = "10") Integer size,
Employee employee,
LocalDate[] beginDateScope){
return employeeService.getEmployeeByPage(currentPage,size,employee,beginDateScope);
}
service
@Override
public RespPageBean getEmployeeByPage(Integer currentPage, Integer size, Employee employee,
LocalDate[] beginDateScope) {
//开启分页 currentPage:当前页 size:每页最大条数
Page<Employee> page = new Page<>(currentPage, size);
IPage<Employee> employeeByPage = employeeMapper.getEmployeeByPage(page, employee, beginDateScope);
RespPageBean respPageBean = new RespPageBean(employeeByPage.getTotal(), employeeByPage.getRecords());
return respPageBean;
}
mapper
IPage<Employee> getEmployeeByPage(Page<Employee> page, @Param("employee") Employee employee,
@Param("beginDateScope") LocalDate[] beginDateScope);
sql语句
<resultMap id="EmployeeInfo" type="com.xxxx.server.pojo.Employee" extends="BaseResultMap">
<association property="nation" javaType="com.xxxx.server.pojo.Nation">
<id column="nid" property="id" />
<result column="nname" property="name" />
</association>
<association property="politicsStatus" javaType="com.xxxx.server.pojo.PoliticsStatus">
<id column="pid" property="id" />
<result column="pname" property="name" />
</association>
<association property="department" javaType="com.xxxx.server.pojo.Department">
<id column="did" property="id" />
<result column="dname" property="name" />
</association>
<association property="joblevel" javaType="com.xxxx.server.pojo.Joblevel">
<id column="jid" property="id" />
<result column="jname" property="name" />
</association>
<association property="position" javaType="com.xxxx.server.pojo.Position">
<id column="posid" property="id" />
<result column="posname" property="name" />
</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` AS dname,
j.id AS jid,
j.`name` AS jname,
pos.id AS posid,
pos.`name` AS 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.name">
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.departmentId">
AND e.departmentId = #{employee.departmentId}
</if>
<if test="null!=beginDateScope and 2==beginDateScope.length">
AND e.beginDate BETWEEN #{beginDateScope[0]} AND #{beginDateScope[1]}
</if>
ORDER BY
e.id
</select>