本文讲述SpringBoot使用Mybatis-Plus进行分页,以及简单的测试
如果尚前不会配置Mybatis-plus,前往我的另一篇文章,SpringBoot集成Mybatis-Plus
https://blog.csdn.net/Memory_loss/article/details/102534030
这里是我的pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!--mysql->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--lombok 可选-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
我这里以 properties 为例
#我是用的是mysql8.0如果是其他版本,请注意url与driver的区别,切勿直接粘贴复制
spring.datasource.url= jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
logging.level.cn.bdqn.mapper = debug
server.port=8081
User实体类
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* @author zouxm
* @create 2019-10-11 9:14
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
//上面是lombok,作用是生成get,set,有参无参与连写set,有兴趣的可以去安装找一下这个插件
@TableName("t_user")
public class User {
private int id;
private String name;
private int age;
private String email;
private String password;
}
/**
* @author zouxm
* @create 2019-10-11 17:37
*/
//Spring boot方式
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
return paginationInterceptor;
}
}
/**
* @author zouxm
* @create 2019-10-11 16:29
*/
public interface UserMapper extends BaseMapper<User> {
}
进入Page会发现这与我们不适用mybatis需要手动编写时功能差不多的一个类,这样我们就理解了
@RunWith(SpringRunner.class)
@SpringBootTest
public class Sb0707MybatisPlusApplicationTests {
@Autowired
UserMapper userMapper;
@Test
public void pluspage() {
/**
* page第一个参是当前页码 第二个参数是 每页大小
* 这里我查找的是 第二页 每页定为三条数据
*/
IPage<User> page = userMapper.selectPage(new Page<>(2, 3), null);
List<User> users = page.getRecords();
users.forEach(System.out::println);
}
}
测试结果
SELECT id,password,name,email,age FROM t_user LIMIT ?,?
Total: 3
User{id=5, name='Billie', age=24, email='[email protected]', password='123456'}
User{id=6, name='zxp', age=10, email='[email protected]', password='123456'}
User{id=7, name='zhang', age=12, email='[email protected]', password='123456'}
@Test
public void pluspage() {
QueryWrapper<User> wapper = new QueryWrapper<>();
wapper.like("name", "z");
IPage<User> page = userMapper.selectPage(new Page<>(1, 4), wapper);
List<User> users = page.getRecords();
users.forEach(System.out::println);
}
测试结果
Preparing: SELECT id,password,name,email,age FROM t_user WHERE (name LIKE ?) LIMIT ?,?
Parameters: %z%(String), 3(Long), 3(Long)
Total: 3
User{id=10, name='zxp', age=18, email='[email protected]', password='123456'}
User{id=11, name='zxp', age=18, email='[email protected]', password='123456'}
User{id=12, name='zxp', age=18, email='[email protected]', password='123456'}
查询的时候我们发现,执行的SQL不仅仅是获取信息,比如下面
SELECT COUNT(1) FROM t_user WHERE (name LIKE ?)
当我们使用分页的过程中,可以获取我们常用的设置信息
@Test
public void pluspage() {
QueryWrapper<User> wapper = new QueryWrapper<>();
wapper.like("name", "z");
IPage<User> page = userMapper.selectPage(new Page<>(2, 3), wapper);
List<User> users = page.getRecords();
System.out.println("pages===>" + page.getPages());
System.out.println("CurrentNo===>" + page.getCurrent());
System.out.println("total===>" + page.getTotal());
users.forEach(System.out::println);
}
结果
pages===>4
CurrentNo===>2
total===>11
User{id=10, name='zxp', age=18, email='[email protected]', password='123456'}
User{id=11, name='zxp', age=18, email='[email protected]', password='123456'}
User{id=12, name='zxp', age=18, email='[email protected]', password='123456'}
#结尾
本文章参考 mybatis-plus 中文文档
https://mp.baomidou.com/guide/