目錄
?一、前置工作:
? ? ? ? 1.整體項目目錄結(jié)構(gòu)
? ? ? ? 2.創(chuàng)建普通javamaven項目。
? ? ? ??3.導(dǎo)入依賴,改造成springboot項目
????????4.配置啟動類
????????5.創(chuàng)建service接口及其實現(xiàn)類
? ? ? ?6.創(chuàng)建接口Mapper
????????
????????7.配置數(shù)據(jù)源
?? ? ? ?8.創(chuàng)建數(shù)據(jù)庫表
二、使用MP(mybatisplus)的分頁插件
二、使用自定義的分頁插件
?????????MyBatis Plus自帶分頁插件,只要簡單的配置即可實現(xiàn)分頁功能。
?一、前置工作:
? ? ? ? 1.整體項目目錄結(jié)構(gòu)
? ? ? ? 2.創(chuàng)建普通javamaven項目。
? ? ? ??3.導(dǎo)入依賴,改造成springboot項目
????????依賴:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qcby</groupId>
<artifactId>SpringBootMybatisPlus</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
????????4.配置啟動類
package com.qcby;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.qcby.SpringBoot.mapper")
public class SpringBootApplication1 {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication1.class, args);
}
}
? ? ? ? 5.配置實體類
package com.qcby.SpringBoot.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("t_product")
public class Product {
private Long id;
private String name;
private Integer price;
private Integer version;
}
package com.qcby.SpringBoot.pojo;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data //set和get方法
@AllArgsConstructor //全參構(gòu)造器
@NoArgsConstructor //無參構(gòu)造器
@TableName("t_user")
public class User {
//因為用到雪花算法,所以用Long屬性
@TableId
private Long id;
private String name;
private Integer age;
private String email;
@TableLogic
private Integer isDeleted;
}
????????5.創(chuàng)建service接口及其實現(xiàn)類
package com.qcby.SpringBoot.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qcby.SpringBoot.pojo.User;
/**
* UserService繼承IService模板提供的基礎(chǔ)功能
*/
public interface UserService extends IService<User> {
}
package com.qcby.SpringBoot.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qcby.SpringBoot.mapper.UserMapper;
import com.qcby.SpringBoot.pojo.User;
import com.qcby.SpringBoot.service.UserService;
import org.springframework.stereotype.Service;
/**
* ServiceImpl實現(xiàn)了IService,提供了IService中基礎(chǔ)功能的實現(xiàn)
* 若ServiceImpl無法滿足業(yè)務(wù)需求,則可以使用自定的UserService定義方法,并在實現(xiàn)類中實現(xiàn)
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
? ? ? ?6.創(chuàng)建接口Mapper
package com.qcby.SpringBoot.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qcby.SpringBoot.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
????????
package com.qcby.SpringBoot.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qcby.SpringBoot.pojo.Product;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ProductMapper extends BaseMapper<Product> {
}
????????7.配置數(shù)據(jù)源
? ? ? ? 在application.yaml中配置信息。
spring:
# 配置數(shù)據(jù)源信息
datasource:
# 配置數(shù)據(jù)源類型
type: com.zaxxer.hikari.HikariDataSource
# 配置連接數(shù)據(jù)庫信息
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=false
username: root
password: root
# 配置MyBatis日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
?? ? ? ?8.創(chuàng)建數(shù)據(jù)庫表
二、使用MP(mybatisplus)的分頁插件
? ? ? ? 首先要在容器中配置一個mybatisplus分頁插件的bean。
? ? ? ? 可以自定義一個配置類,也可以在啟動類中配置,因為啟動類也是一個配置類。
package com.qcby.SpringBoot.config;
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 {
/**
* 分頁插件
* 構(gòu)建一個攔截來處理分頁
* 每個數(shù)據(jù)庫廠商對于分頁的實現(xiàn)語法有差別,因此,在聲明該攔截時,需要指定應(yīng)用的數(shù)據(jù)庫類型
* @return
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new
PaginationInnerInterceptor(DbType.MYSQL));//由于各個數(shù)據(jù)庫的語法會有差別,因此,要指明數(shù)據(jù)庫類型
return interceptor;
}
}
? ? ? ? 編寫測試類文章來源:http://www.zghlxwxcb.cn/news/detail-860366.html
package com.qcby;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qcby.SpringBoot.mapper.ProductMapper;
import com.qcby.SpringBoot.mapper.UserMapper;
import com.qcby.SpringBoot.pojo.Product;
import com.qcby.SpringBoot.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class Test2 {
@Autowired
private UserMapper userMapper;
@Autowired
private ProductMapper productMapper;
@Test
public void testPage(){
//設(shè)置分頁參數(shù)
Page<User> page = new Page<>(1, 5);
userMapper.selectPage(page, null);
//獲取分頁數(shù)據(jù)
List<User> list = page.getRecords();
list.forEach(System.out::println);
System.out.println("當前頁:"+page.getCurrent());
System.out.println("每頁顯示的條數(shù):"+page.getSize());
System.out.println("總記錄數(shù):"+page.getTotal());
System.out.println("總頁數(shù):"+page.getPages());
System.out.println("是否有上一頁:"+page.hasPrevious());
System.out.println("是否有下一頁:"+page.hasNext());
}
}
二、使用自定義的分頁插件
? ? ? ? 在usermapper中加入方法文章來源地址http://www.zghlxwxcb.cn/news/detail-860366.html
package com.qcby.SpringBoot.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qcby.SpringBoot.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserMapper extends BaseMapper<User> {
/**
* 根據(jù)年齡查詢用戶列表,分頁顯示
* @param page 分頁對象 ,xml中可以從里面進行取值 ,傳遞參數(shù) Page 即自動分頁 ,必須放在第一位
* @param age 年齡
* @return
*/
/**
* 不用加limit語句,因為配置了一個攔截的插件,只需要傳入page對象,還是使用的MP的分頁插件
* @param page
* @param age
* @return
*/
@Select("SELECT id,name,age,email FROM t_user WHERE age > #{age}")
IPage<User> selectPageVo(@Param("page") Page<User> page, @Param("age") Integer age);
}
package com.qcby;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qcby.SpringBoot.mapper.ProductMapper;
import com.qcby.SpringBoot.mapper.UserMapper;
import com.qcby.SpringBoot.pojo.Product;
import com.qcby.SpringBoot.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class Test2 {
@Autowired
private UserMapper userMapper;
@Autowired
private ProductMapper productMapper;
@Test
public void testSelectPageVo(){
//設(shè)置分頁參數(shù)
Page<User> page = new Page<>(1, 5);
userMapper.selectPageVo(page, 20);
//獲取分頁數(shù)據(jù)
List<User> list = page.getRecords();
list.forEach(System.out::println);
System.out.println("當前頁:"+page.getCurrent());
System.out.println("每頁顯示的條數(shù):"+page.getSize());
System.out.println("總記錄數(shù):"+page.getTotal());
System.out.println("總頁數(shù):"+page.getPages());
System.out.println("是否有上一頁:"+page.hasPrevious());
System.out.println("是否有下一頁:"+page.hasNext());
}
}
到了這里,關(guān)于MyBatisPlus(SpringBoot版)的分頁插件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!