MyBatis-Plus实现自定义SQL语句的分页查询

正常开发的时候,有时候要写一个多表查询,然后多表查询之后还需要分页,MyBatis-Plus的分页插件功能挺不错的,可以很简单实现自定义SQL的分页查询。

分页插件配置

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;
    }
}

注解方式写自定义SQL

自定义SQL返回数据的DTO类

自定义SQL返回的数据跟模型类也有点出入,需要重新新建一个DTO类,用来存储数据。

import lombok.Data;

@Data
public class UserOrgDto {
    private String userName;
    private String realName;
    private String orgName;
}
Mapper类上注解开发
@Mapper
public interface UserMapper extends BaseMapper {
    @Select("select a.user_name,a.real_name,b.org_name from user a left join org b on b.id = a.org_id where a.user_status = 0")
    Page findUserPage(Page page);
}

测试调用

@SpringBootTest
@ActiveProfiles("dev")
public class  CommonApplicationTest {
	@Resource
    private UserMapper userMapper;
    @Test
    public void pageUser(){
        Page page = new Page<>(1,10);
        Page userPage= userMapper.findUserPage(page);
        System.out.println(JSONUtil.toJsonStr(userPage));
     }
}

MyBatis-Plus当识别出传入page参数,便能自动分页,十分好用方便,帮我们高效开发。

你可能感兴趣的:(真,·,解决问题,·,小知识,mybatis,sql,数据库)