Mybatis-plus 分頁及條件構造器的使用


項目中要用到MP,為了做需求時不至於手忙腳亂,所以這幾天也都在學習Mybatis-plus。今天主要說條件構造器與 3 版本中MP自帶的分頁插件,具體從 3.幾 開始我沒查,不過我用的是3.3.1。

一、導入依賴

<dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.3.1</version>
</dependency>

二、書寫分頁攔截器

package com.exec.studymp.config;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@EnableTransactionManagement
@Configuration
@MapperScan("com.exec.studymp.user.mapper")
public class MybatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
        return paginationInterceptor;
    }
}

三、使用new Page<>(current,pageSize)實現分頁。

  1、實體類User

package com.exec.studymp.user.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.stereotype.Component;

@Data
@Component
@TableName(value = "user")
public class User {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

  2、UserMapper

package com.exec.studymp.user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.exec.studymp.user.entity.User;

public interface UserMapper extends BaseMapper<User> {
}

  3、UserController

  @GetMapping("/query")
    public Map<String, Object> query(@RequestParam Integer curPage, @RequestParam Integer pageSize) {
        Map<String, Object> map = new HashMap<>();
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();

        queryWrapper.orderByDesc("id");

        Page<User> page = new Page<>(curPage, pageSize);
        IPage<User> ipage = userMapper.selectPage(page, queryWrapper);
        map.put("total", ipage.getRecords());
        map.put("current", ipage.getCurrent());
        map.put("pages", ipage.getPages());
        System.out.println("map---" + map);
        return map;
   }

--------------------------------以上是分頁的使用--------------------------------------


 

四、條件構造器

    public PageBody query(User user) {
        QueryWrapper<User> qw = new QueryWrapper<>();
        if (user.getId() != null) {
            qw.eq("id", user.getId());
        }
        if (user.getName() != null) {
            qw.eq("name", user.getName());
        }
        if (user.getAge != null) {
            qw.eq("age", user.getAge());
        }
        if (user.getEmail() != null) {
            qw.eq("email", user.getEmail());
        }
        qw.orderByAsc("id").orderByDesc("age");

        Page<User> page = new Page<>(user.getCurrent(), user.getPageSize());
        IPage<User> allPages = userMapper.selectPage(page, qw);

        PageBody pageBody = new PageBody();
        pageBody.setCount(allPages.getTotal());
        pageBody.setValue(allPages.getRecords());
        return pageBody;
    }

eq 是equal的縮寫,相當於sql語句:where id=user.getId() and name=user.getName().....

orderByAsc 按升序排序

orderByDesc 按降序排序

在sql查詢用到的組件可以在Mybatis-plus的官網 <條件構造器> 一節看到,官網地址:https://mp.baomidou.com/guide/wrapper.html#abstractwrapper

 

最后要說的是,要系統學習Mybatis-plus的話,就去看看官網,我這只是舉了一些栗子~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM