Mybatis Plus 分頁以及連表查詢
1、Mybatis Plus分頁配置類
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
2、編寫測試類
// 第一個參數:當前頁數,第二個參數:每頁顯示多少條
Page<User> userPage = new Page<>(1,2);
Page<User> page = new LambdaQueryChainWrapper<User>(userService.getBaseMapper())
.select(User::getId,User::getUsername)
.lt(User::getId,10) // 條件id小於10的
.page(userPage);
// 總條數
System.out.println("Total = " + page.getTotal());
// 當前頁
System.out.println("Current = " + page.getCurrent());
// 每頁數量
System.out.println("Size = " + page.getSize());
// 查詢到的數據列表
System.out.println("Records = " + page.getRecords());
3、連表查詢
- Mybatis Plus自身是沒有連表查詢的功能的,需要導入新的依賴
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join</artifactId>
<version>1.2.2</version>
</dependency>
其中
- mapper 要繼承MPJBaseMapper 實現對應的方法 (必選)
- service 可以繼承MPJBaseService 實現對應的方法 (可選)
- serviceImpl 可以繼承MPJBaseServiceImpl實現對應的方法 (可選)
4、編寫測試類
List<User1> list = userMapper.selectJoinList(User1.class,
new MPJLambdaWrapper<User1>()
.select(User1::getName)
.select(User2::getName)
.selectAll(User3.class)
.selectAs(User1::getNickName, UserDTO::getUserNickName)
.leftJoin(User2.class, User2::getId, User1::getId)
.leftJoin(User3.class, User3::getId, User1::getId)