springboot分页查询mybatisplus
时间: 2023-05-31 20:19:45 浏览: 152
springboot集成mybatisplus的方法
### 回答1:
Spring Boot结合Mybatis Plus实现分页查询的步骤如下:
1. 在pom.xml文件中添加Mybatis Plus和分页插件的依赖:
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.1.2</version>
</dependency>
```
2. 在application.yml文件中配置分页插件:
```
mybatis-plus:
configuration:
# 开启驼峰命名转换
map-underscore-to-camel-case: true
# 配置分页插件
plugins:
- com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
```
3. 在Mapper接口中定义分页查询方法:
```
public interface UserMapper extends BaseMapper<User> {
/**
* 分页查询用户列表
*
* @param page 分页参数
* @param name 用户名
* @return 用户列表
*/
IPage<User> selectUserList(Page<User> page, @Param("name") String name);
}
```
4. 在Service中调用Mapper的分页查询方法:
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public IPage<User> selectUserList(Page<User> page, String name) {
return userMapper.selectUserList(page, name);
}
}
```
5. 在Controller中接收分页参数并调用Service的分页查询方法:
```
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public Result<IPage<User>> selectUserList(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(required = false) String name) {
Page<User> page = new Page<>(pageNum, pageSize);
IPage<User> userPage = userService.selectUserList(page, name);
return Result.success(userPage);
}
}
```
以上就是Spring Boot结合Mybatis Plus实现分页查询的步骤。
### 回答2:
Spring Boot是一个开发企业级Java应用的框架。而MybatisPlus是在Mybatis基础上进行封装增强后的ORM框架,使用MybatisPlus可以避免一些重复的简单操作,从而提高开发效率和代码质量。
在Spring Boot中,使用MybatisPlus进行分页查询可以遵循以下步骤:
1. 在pom.xml中添加MybatisPlus的依赖,如下所示:
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
```
2. 在application.properties文件中配置MybatisPlus的分页插件:
```
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.mapper-locations=classpath*:mapper/*.xml
mybatis-plus.pagehelper.helper-dialect=mysql
mybatis-plus.pagehelper.reasonable=true
```
3. 在Mapper中编写分页查询的SQL语句和方法,参考如下代码:
```
public interface UserMapper extends BaseMapper<User> {
@Select("select * from user")
@SelectProvider(type = SqlProvider.class, method = "selectList")
IPage<User> selectPage(Page<User> page);
class SqlProvider {
public String selectList() {
return "FROM user";
}
}
}
```
其中,使用@SelectProvider注解和SqlProvider类来动态生成SQL语句,然后使用BaseMapper中封装好的selectPage方法进行分页查询。
4. 在Service层中调用Mapper的分页查询方法,参考如下代码:
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Page<User> selectPage(Page<User> page) {
return userMapper.selectPage(page);
}
}
```
其中,使用@Autowired注解注入UserMapper,并调用其selectPage方法进行分页查询。
综上所述,使用Spring Boot和MybatisPlus进行分页查询的步骤较为简单,只需要添加依赖、配置分页插件、编写分页查询的SQL语句和方法、Service层调用Mapper的方法即可。然后就可通过Page对象来进行分页查询,返回的结果就是一个IPage对象。
### 回答3:
Spring Boot中常用的持久化框架是MyBatisPlus,而在实际应用开发中,需要进行分页查询操作,这也是一个非常常见的需求。
首先,在pom.xml文件中引入MyBatisPlus的依赖包:
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
```
创建一个Mapper接口,使用MyBatisPlus的BaseMapper,其中需要继承`com.baomidou.mybatisplus.core.mapper.BaseMapper`。
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
List<User> selectUserByPage(Page<User> page, @Param("age") Integer age);
}
```
在方法中使用`List<User> selectUserByPage(Page<User> page, @Param("age") Integer age)`来分页查询,其中Page是MyBatisPlus提供的分页对象,它有三个参数:当前页、每页记录数、总记录数;selectUserByPage方法的参数中使用了@Param注解,指定了查询条件。
然后,在Service层中调用Mapper并且处理好分页参数。
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public PageVo<User> pageQueryUser(Integer pageNum, Integer pageSize, Integer age) {
Page<User> page = new Page<>();
page.setCurrent(pageNum);
page.setSize(pageSize);
List<User> userList = userMapper.selectUserByPage(page, age);
return new PageVo<>(page.getTotal(), userList);
}
}
```
在Service中调用Mapper的`selectUserByPage`方法,将分页参数设置好,然后调用`com.baomidou.mybatisplus.extension.plugins.pagination.Page`的方法查询出数据。最后封装成一个PageVo对象返回给Controller以供前端页面使用。其中`PageVo<T>`的定义类似于:
```java
@Data
public class PageVo<T> {
private Long total;
private List<T> items;
public PageVo(Long total, List<T> items) {
this.total = total;
this.items = items;
}
}
```
最后,在Controller层调用Service方法将查询出的分页数据传递给前端。
```java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/page")
public PageVo<User> pageQueryUser(
@RequestParam(value = "page_num", defaultValue = "1") Integer pageNum,
@RequestParam(value = "page_size", defaultValue = "10") Integer pageSize,
@RequestParam(value = "age", required = false) Integer age) {
return userService.pageQueryUser(pageNum, pageSize, age);
}
}
```
在Controller中定义了一个`pageQueryUser`的方法,接收前端传来的分页参数,并调用Service层方法查询数据后返回。
阅读全文