項目中要用到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的話,就去看看官網,我這只是舉了一些栗子~~