多表查询与分页查询
多表查询
- 对于你要查询的东西,相应的接收数据类应该也要做出合适的修改。
MyBatis Plus不能简化完成多表查询。
下面是User类和Order类的声明:
|
|
查询的时候,MyBatis Plus代理实现的接口Select语句如果从一张表中查不出来这个属性,需要多表连接才能实现的时候,应当加上@TableField(exist = false)注解。
|
|
- 对于多表查询,需要实现查找类的
Mapper以及其多表连接类的Mapper,写法可以如下:
- MemberInfoMapper
|
|
- OrderMapper
|
|
这里的
@Results注解可以使得查询结果和Java变量一一对应。一旦加了该注解,即使变量名一致也得写@Result注解。
@Result(column = "MemberID",property = "Orders",javaType = List.class,many = @Many(select = "dev.mczs.springbootstu.mapper.OrderMapper.getOrders"))这里的javaType表示property变量的类型,@Many注解表示一对多的数据,相当于SQL中的子查询。
@One注解则表示一对一的关系。
最后其中一个查询的结果如下:
|
|
条件查询、分页查询等
MyBatis-Plus 提供了常见SQL语句的封装类,通过其提供的条件构造器能使用C Like的方式实现查询功能,详细请见MyBatis-Plus | Wrapper。
下面看两个常用的查询方式
条件查询
示例:
|
|
分页查询
为了提高查询的效率,一般在只查询去部分信息,这也符合大量数据的时候在前端一般会分页来显示,通过每次查询少量信息,这是前后端中常见的情况,这等价于SQL中的limit语句。
于 v3.5.9 起,PaginationInnerInterceptor 已分离出来。如需使用,则需单独引入 mybatis-plus-jsqlparser 依赖 , 具体请查看 安装 一章。
1implementation 'com.baomidou:mybatis-plus-jsqlparser:3.5.16'
为了使用分页查询,需要先实现一个配置类,参考如下:
|
|
分页查询的实际使用如下:
|
|
这里返回的是IPage对象,其帮助我们实现了返回当前页数、总页数等信息。