mybatis前后端分页查询
时间: 2023-11-17 14:55:21 浏览: 129
根据提供的引用内容,可以使用MyBatis实现前后端分页查询。首先,需要下载并引入Pagination插件,并引入相关的CSS和jQuery。然后,在控制器中定义一个方法,使用@RequestParam注解获取pageNum、pageSize和keyWord参数。调用AdminService中的getAdminPage方法进行带条件或者不带条件的查询,并将查询结果存入PageInfo对象中。最后,将查询结果存入模型中,返回到相应的页面。
相关问题
mybatis-plus分页查询报500
回答: 根据引用\[1\]和引用\[2\]的内容,mybatis-plus分页查询需要配置分页插件才能实现真正的分页。如果没有配置分页插件,total(总条数)和pages(总页数)可能会显示为0。所以,需要添加一个配置类来配置分页插件。另外,根据引用\[3\]的内容,mybatis-plus和mybatis在分页代码上有一些差异。在mybatis中,需要将当前页需要 - 1再乘以每页条数传入#{page};而在mybatis-plus中,可以直接使用new Page(page, size)来实现分页。如果mybatis-plus分页查询报500错误,可能是由于分页配置不正确或者前后端传参有问题。请检查分页配置和前后端传参是否正确。
#### 引用[.reference_title]
- *1* *3* [【SpringBoot】MyBatis与MyBatis-Plus分页查询问题](https://blog.csdn.net/m0_65563175/article/details/130563322)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [mybatis-plus分页查询详解](https://blog.csdn.net/w1014074794/article/details/125787908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
用springboot和vue和mybatis的分页插件完成前后端分离的分页查询功能
好的,这是一个比较具体的问题,需要详细解答,我尽量简单明了地回答。
首先,使用Spring Boot可以实现后端的快速开发,它提供了很多方便的注解和模板,可以大大减少开发工作量。使用MyBatis可以方便地操作数据库,而分页插件可以实现分页查询功能。至于前端,Vue是一种非常流行的JavaScript框架,可以帮助我们快速构建交互式的前端页面。
下面是具体的步骤:
1. 后端开发
首先,需要在pom.xml中引入mybatis分页插件的依赖:
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
```
然后,在Spring Boot的配置文件中添加如下配置:
```yaml
mybatis:
mapper-locations: classpath:mapper/*.xml
configuration:
map-underscore-to-camel-case: true
plugins:
- com.github.pagehelper.PageInterceptor
```
这里配置了MyBatis的mapper文件路径、开启下划线转驼峰命名法、以及引入了MyBatis分页插件。
接着,需要在mapper文件中实现分页查询功能,在xml文件中添加如下代码:
```xml
<select id="findUsers" resultMap="BaseResultMap">
select * from user
<where>
<if test="name != null and name != ''">
name like concat('%', #{name}, '%')
</if>
</where>
order by id desc
<if test="start != null and end != null">
limit #{start}, #{end}
</if>
</select>
```
这里使用了MyBatis的动态SQL语法,根据传入的参数进行条件查询,并且通过limit关键字实现分页查询。
最后,在Controller中实现接口,返回分页查询的结果:
```java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public PageInfo<User> findUsers(int pageNum, int pageSize, String name) {
PageHelper.startPage(pageNum, pageSize);
List<User> users = userService.findUsers(name);
return new PageInfo<>(users);
}
}
```
这里使用了PageHelper.startPage方法设置分页查询的参数,然后调用UserService的findUsers方法查询数据库,并将结果封装在PageInfo中返回。
2. 前端开发
在前端开发中,需要使用Vue框架构建页面,并使用axios库发送请求获取数据。
首先,在Vue组件中定义分页的参数和数据:
```javascript
data() {
return {
pageNum: 1,
pageSize: 10,
total: 0,
users: []
}
}
```
然后,在组件的created方法中发送请求获取数据:
```javascript
created() {
this.getUsers()
},
methods: {
getUsers() {
axios.get('/user/list', {
params: {
pageNum: this.pageNum,
pageSize: this.pageSize,
name: this.name
}
}).then(res => {
this.users = res.data.list
this.total = res.data.total
})
}
}
```
这里使用axios库发送GET请求,传入分页参数pageNum和pageSize,并且根据name进行条件查询。在请求成功后,将返回的数据赋值给组件的数据users和total。
最后,在组件的模板中显示分页结果:
```html
<el-table :data="users">
<el-table-column prop="id" label="ID"></el-table-column>
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
</el-table>
<el-pagination
:current-page="pageNum"
:page-size="pageSize"
:total="total"
@current-change="getUsers">
</el-pagination>
```
这里使用了ElementUI库中的表格和分页组件,将查询到的用户数据展示在表格中,并且根据total和pageSize计算分页页数,通过@current-change事件监听分页的变化,调用getUsers方法获取对应的数据。
以上就是使用Spring Boot、Vue和MyBatis分页插件完成前后端分离的分页查询功能的步骤。
阅读全文