网站开发遇到的问题及解决方法,单位建设网站,云南省安宁市建设厅官方网站,app开发模板网站文章目录前言一、二、如何实现1 配置mybatis plus分页插件2.准备三张表2.1 学生表2.2 老师表2.3 老师和学生Vo表3. 编写SQL语句4. 编写mapper层5. service层6.controller层演示效果【补充】 XML 自定义分页总结前言 没啥可说的 一、 没啥可说的 二、如何实现
1 配置mybatis pl…
文章目录前言一、二、如何实现1 配置mybatis plus分页插件2.准备三张表2.1 学生表2.2 老师表2.3 老师和学生Vo表3. 编写SQL语句4. 编写mapper层5. service层6.controller层演示效果【补充】 XML 自定义分页总结前言 没啥可说的 一、 没啥可说的 二、如何实现
1 配置mybatis plus分页插件
Configuration
MapperScan(com.breez.vote.mapper)
public class MybatispluConfig {/*** 配置分页插件*/Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}2.准备三张表
2.1 学生表
Data
TableName(student)
public class Student implements Serializable {private Integer id;private String studentName;private Integer studentAge;
}2.2 老师表
Data
TableName(teacher)
public class Teacher implements Serializable {private Integer id;private String teacherName;private Integer teacherAge;
}
2.3 老师和学生Vo表 这张表的数据来自老师和学生用来保存来自多张表的数据。 /*** 学生和老师*/
Data
public class QueryVo implements Serializable {/*** 学生名字*/private String studentName;/*** 学生年龄*/private Integer studentAge;/*** 老师姓名*/private String teacherName;/*** 老师年龄*/private Integer teacherAge;
}3. 编写SQL语句 这里需要注意写完SQL语句后需要在结尾加上${ew.customSqlSegment}查询参数由mybatis plus自动拼装。 ?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.breez.vote.mapper.StudentMapperselect idfindByPage resultTypecom.breez.vote.domain.vo.QueryVoselect * from student,teacher ${ew.customSqlSegment}/select/mapper4. 编写mapper层
public interface StudentMapper extends BaseMapperStudent {/***自定义分页条件查询* param page 分页参数* param wrapper 查询参数* return*/IPageQueryVo findByPage(IPageQueryVo page, Param(Constants.WRAPPER) QueryWrapperQueryVo wrapper);
}5. service层
public interface StudentService extends IServiceStudent {/**** param page 分页参数* param queryWrapper 查询条件* return 分页后的数据*/public IPageQueryVo findByPage(PageQueryVo page, QueryWrapperQueryVo queryWrapper);}Service
public class StudentServiceImpl extends ServiceImplStudentMapper, Student implements StudentService {Resourceprivate StudentMapper queryMapper;/*** param page 分页参数* param queryWrapper 查询条件* return 分页后的数据*/Overridepublic IPageQueryVo findByPage(PageQueryVo page, QueryWrapperQueryVo queryWrapper) {return queryMapper.findByPage(page, queryWrapper);}
}6.controller层
RestController
RequestMapping(data)
public class StudentController {Autowiredprivate StudentService studentService;GetMapping(query)public Object query() {PageQueryVo page new Page(1, 2);IPageQueryVo queryVoPage studentService.findByPage(page, new QueryWrapper());return queryVoPage;}
}演示效果
✏️学生表【4条数据】 ✏️ 老师表【3条数据】 这里出现这个结果原因出现了12条数据【3*412】是我没有在SQL语句中写多表查询条件出现了笛卡尔积加上多表查询条件后就不会出现相同的了李刚。 【补充】 XML 自定义分页
UserMapper.java 方法内容
public interface UserMapper {//可以继承或者不继承BaseMapper/*** p* 查询 : 根据state状态查询用户列表分页显示* /p** param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位(你可以继承Page实现自己的分页对象)* param state 状态* return 分页对象*/IPageUser selectPageVo(Page? page, Integer state);
}UserMapper.xml 等同于编写一个普通 list 查询mybatis-plus 自动替你分页
select idselectPageVo resultTypecom.baomidou.cloud.entity.UserVoSELECT id,name FROM user WHERE state#{state}
/selectUserServiceImpl.java 调用分页方法
public IPageUser selectUserPage(PageUser page, Integer state) {// 不进行 count sql 优化解决 MP 无法自动优化 SQL 问题这时候你需要自己查询 count 部分// page.setOptimizeCountSql(false);// 当 total 为小于 0 或者设置 setSearchCount(false) 分页插件不会进行 count 查询// 要点!! 分页返回的对象与传入的对象是同一个return userMapper.selectPageVo(page, state);
}总结 一个字: 巴适