添加依赖
在项目pom.xml中导入PageHelper的依赖,这里的版本号是1.4.1
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>
控制台打印sql日志
在配置文件application.yml/application.properties中添加
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
图片
代码
实体类pojo
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp implements Serializable {
private Integer empno;
private String ename;
private Integer mgr;
private Date hiredate;
private Double sal;
private Double comm;
private Integer deptno;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
有这三个注解就不用建有参、无参、get、set方法
可在pom.xml中添加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
mapper
List<Emp> likeAanLimitAll(String ename);
这里只写要模糊查询的参数即可,使用PageHelper就不用参数页码和条数
mapper.xml
<!-- 提取封装 -->
<sql id="select">
select empno,ename,mgr,hiredate,sal,comm,deptno from emp
</sql>
<!-- 使用PageHelper实现分页就不需要添加limit -->
<select id="likeAanLimitAll" resultMap="emp">
<include refid="select"></include>
<where>
<if test="ename != null and ename != ''">
and ename like concat('%',#{ename},'%')
</if>
</where>
</select>
这里使用的动态sql, if 标签,ename如果不是null并且也不为空串,就按照模糊查询并分页,反之则查询全部并分页
业务层service
PageInfo<Emp> limitAndLikeAllInfo(String ename, Integer pageNumber, Integer pageSize);
这里需要接收参数,使用PageHelper进行分页
serviceImpl
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpMapper empMapper;
@Override
public PageInfo<Emp> limitAndLikeAllInfo(String ename, @RequestParam(defaultValue = "1") Integer pageNumber, Integer pageSize) {
// 开启分页
PageHelper.startPage(pageNumber,pageSize);
// 根据参数查询全部
List<Emp> empList = empMapper.likeAanLimitAll(ename);
// 使用pageInfo包装查询后的结果,封装了详细的查询数据
PageInfo<Emp> empPageInfo = new PageInfo<>(empList);
// 返回
return empPageInfo ;
}
}
控制层controller
@RestController
public class EmpController {
@Autowired
private EmpService empService;
@GetMapping("/limitAndLikeAllInfo")
public PageInfo<Emp> limitAndLikeAllInfo(String ename, Integer pageNumber, Integer pageSize){
PageInfo<Emp> empPageInfo = empService.limitAndLikeAllInfo(ename, pageNumber, pageSize);
return empPageInfo;
}
}
测试
这里使用了两种方式,一:在谷歌浏览器地址栏输入;二:用postman测试
数据库中有18条数据
谷歌浏览器:
ename=春,pageNumber=1当前为第一页,pageSize=2当前页有两条数据
总共查到4条
ename没有,pageNumber=1当前为第一页,pageSize=18当前页有十八条数据
总共查到18条
postman:
ename=春,pageNumber=1当前为第一页,pageSize=4当前页有四条数据
总共查到4条
对照数据库,查询的数据是正确的
ename没有,pageNumber=1当前为第一页,pageSize=4当前页有四条数据
总共查到18条