如何使用MyBatis Plus实现分页功能?
时间: 2024-06-16 10:05:39 浏览: 130
使用MyBatis Plus实现分页功能可以通过以下步骤:
1. 引入MyBatis Plus依赖:在项目的pom.xml文件中添加MyBatis Plus的依赖。
2. 配置分页插件:在MyBatis的配置文件中配置分页插件,以支持分页功能。可以使用`PaginationInterceptor`来实现分页功能。
3. 创建Mapper接口:创建一个Mapper接口,继承自`BaseMapper`,该接口提供了一些基本的CRUD方法。
4. 创建实体类:创建一个与数据库表对应的实体类,并使用注解或配置文件进行映射。
5. 编写SQL语句:在Mapper接口中编写SQL语句,可以使用MyBatis Plus提供的方法来实现分页查询,如`selectPage`方法。
6. 调用分页查询方法:在Service层或Controller层中调用Mapper接口中的分页查询方法,并传入分页参数。
7. 处理分页结果:获取查询结果后,可以通过分页对象获取总记录数、总页数等信息,并将查询结果返回给前端展示。
相关问题
Mybatis或Mybatis plus实现分页,返回Page
Mybatis或Mybatis plus都可以实现分页,并返回Page对象。
使用Mybatis实现分页:
1. 在Mapper接口中定义分页方法,如下:
```
List<User> getUserList(@Param("start") int start, @Param("pageSize") int pageSize);
```
2. 在Mapper XML文件中实现分页查询,如下:
```
<select id="getUserList" resultMap="userMap">
select * from user limit #{start}, #{pageSize}
</select>
```
3. 在Service层中调用Mapper方法,并使用PageHelper进行分页,如下:
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Page<User> getUserList(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<User> userList = userMapper.getUserList(0, pageSize);
return (Page<User>) userList;
}
}
```
使用Mybatis plus实现分页:
1. 在Mapper接口中继承BaseMapper,并使用Page对象作为返回值类型,如下:
```
public interface UserMapper extends BaseMapper<User> {
Page<User> getUserList(Page<User> page);
}
```
2. 在Service层中调用Mapper方法,并使用Page对象进行分页,如下:
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Page<User> getUserList(int pageNum, int pageSize) {
Page<User> page = new Page<>(pageNum, pageSize);
userMapper.getUserList(page);
return page;
}
}
```
springboot项目myBatis plus实现分页查询
1. 添加mybatis plus依赖
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
```
2. 配置mybatis plus
在application.yml文件中添加以下配置:
```
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
configuration:
map-underscore-to-camel-case: true
global-config:
page-helper:
offset-as-page-num: true
limit-as-page-size: true
page-size-zero: true
page-size-max: 1000
```
- mapper-locations:指定mapper文件的位置
- configuration:mybatis的配置项,这里开启下划线转驼峰
- global-config:全局配置,其中page-helper是分页插件的配置
3. 编写mapper.xml文件
在mapper目录下新建一个xxxMapper.xml文件,例如UserMapper.xml,编写查询语句和分页语句,如下:
```
<select id="getUserList" parameterType="java.util.Map" resultMap="BaseResultMap">
select *
from user
where 1 = 1
<if test="name != null">
and name like concat('%', #{name}, '%')
</if>
order by create_time desc
</select>
<select id="getUserPage" parameterType="java.util.Map" resultMap="BaseResultMap">
select *
from user
where 1 = 1
<if test="name != null">
and name like concat('%', #{name}, '%')
</if>
order by create_time desc
limit #{startIndex}, #{pageSize}
</select>
```
其中getUserList是用于查询总记录数的语句,getUserPage是用于分页查询的语句。startIndex和pageSize是分页参数。
4. 编写service层
在service层中,注入UserMapper,并编写分页查询方法,如下:
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Page<User> getUserPage(int pageNum, int pageSize, String name) {
Page<User> page = new Page<>(pageNum, pageSize);
Map<String, Object> params = new HashMap<>();
params.put("startIndex", (pageNum - 1) * pageSize);
params.put("pageSize", pageSize);
params.put("name", name);
List<User> userList = userMapper.getUserPage(params);
int total = userMapper.getUserList(params).size();
page.setRecords(userList);
page.setTotal(total);
return page;
}
}
```
Page是mybatis plus提供的分页对象,通过调用setRecords和setTotal方法,将查询结果和总记录数设置到Page对象中。
5. 编写controller层
在controller层中,注入UserService,并编写分页查询接口,如下:
```
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/page")
public Page<User> getUserPage(@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize,
@RequestParam(required = false) String name) {
return userService.getUserPage(pageNum, pageSize, name);
}
}
```
通过调用getUserPage方法,返回分页查询结果。
至此,springboot项目myBatis plus实现分页查询就完成了。
阅读全文