Spring Boot + Mybatis + vue2 — 实现分页查询

后端

pom.xml文件导入依赖

<!--分页查询-->
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper-spring-boot-starter</artifactId>
   <version>1.4.6</version>
</dependency>

配置全局配置文件application.properties

# 分页
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql

Student.java 学生实体类,里面的属性对应student表中的字段

@Data作用:实现Getter和Setter方法

@AllArgsConstructor作用:实现全参构造方法

@NoArgsConstructor作用:实现空参构造方法

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student{
    /** 所属学院 */
    private String school;
    /** 所属专业 */
    private String major;
    /** 所属班级 */
    private String className;
    /** 学生姓名 */
    private String studentName;
}

@Data注解的使用需要导入Lombok依赖

<!--lombok-->
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <optional>true</optional>
 </dependency>

Params.java 模糊搜索包含的参数,该实体无对应的表字段

@Data
public class ScoreParams {
    /** 所属学院 */
    private String school;
    /** 所属专业 */
    private String major;
    /** 所属班级 */
    private String className;
    /** 学生学号 */
    private String studentNumber;
    /** 学生姓名 */
    private String studentName;
    /** 分页大小 */
    private Integer pageSize;
    /** 分页数 */
    private Integer pageNum;
}

StudentMapper.java

注:@Param("params") Params params命名一定要对应前端传来的参数 params: this.Params 保持一致

 List<Student> findBySearchValue(@Param("params") Params params);

StudentMapper.xml

<select id="findBySearchValue" resultType="com.domain.Student">
  SELECT * FROM student
  <where>
     <if test="params != null and params.school != null and params.school != '' ">
         AND school like concat('%', #{params.school}, '%')
     </if>
     <if test="params != null and params.major != null and params.major != '' ">
         AND major like concat('%', #{params.major}, '%')
     </if>
     <if test="params != null and params.className != null and params.className != '' ">
         AND class_name like concat('%', #{params.className}, '%')
     </if>
         AND student_number like concat('%', #{params.studentNumber}, '%')
     </if>
     <if test="params != null and params.studentName != null and params.studentName != '' ">
         AND student_name like concat('%', #{params.studentName}, '%')
     </if>
   </where>
</select>

StudentService.java

 PageInfo<Student> findBySearchValue(Params params);

StudentServiceImpl.java

 @Override
 public PageInfo<Student> findBySearchValue(Params params) {
        /** 分页查询 */
        PageHelper.startPage(params.getPageNum(),params.getPageSize());
        List<Score> bySearchValue = studentMapper.findBySearchValue(params);
        return PageInfo.of(bySearchValue);
  }

StudentController.java

@GetMapping("/search")
    public AjaxResult findBySearchValue(Params params){
        PageInfo<Student> findBySearchValue = studentService.findBySearchValue(params);
        return AjaxResult.success(findBySearchValue);
    }

前端

我使用的是ElementUI,进入官网:https://element.eleme.cn/2.0/#/zh-CN/component/pagination,任意选择一个分页的样式

SelectStudent.vue

<template>
  <div>
   <div>
      <el-table :data="Table" height="380" border style="width: 100%;">
        <el-table-column prop="school" label="学院" align="center" width="140"> </el-table-column>
        <el-table-column prop="major" label="专业" align="center" width="120"> </el-table-column>
        <el-table-column prop="className" label="班级" align="center" width="120"> </el-table-column>
        <el-table-column prop="studentName" label="姓名" align="center" width="100"> </el-table-column>
        <el-table-column label="操作" width="250" align="center">
          <el-button type="success" icon="el-icon-view" />
          <el-button type="primary" icon="el-icon-edit" />
          <el-button type="danger" icon="el-icon-delete" />
        </el-table-column>
      </el-table>
    </div>
   <!-- 分页查询 -->
   <div class="block" style="margin-left: 600px;margin-top: 20px;">
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="Params.pageNum"
        :page-size="Params.pageSize"
        :page-sizes="[10, 20, 30, 40]"
        layout="total, sizes, prev, pager, next"
        :total="total">
      </el-pagination>
   </div>
 </div>
</template>

SelectStudent.vue

export default {
  name: "ScoreSelct",
  data() {
    return {
      total: 0,
      // 搜索框参数
      Params:{
        school: '',
        major: '',
        className: '',
        studentName: '',
        pageNum: 1,
        pageSize: 10,
      },
      // 查询表格
      scoreTable: [],
    }
  },
  // 页面加载时调用
  created(){
    this.findBySearchValue()
  },
  methods:{
    // 模糊搜索
    findBySearchValue(){
      request.get('/search',{params: this.Params}).then(res => {
        if(res.code === '200'){
          this.Table = res.data.list
          this.total = res.data.total
          this.$message.success('查询成功')
        }else{
          this.$message.error('查询失败')
        }
      })
    },
    // 清空输入框内容
    reset(){
      this.Params={
        school: '',
        major: '',
        className: '',
        studentName: '',
      },
      this.findBySearchValue()
    },
    // 点击查询时,触发10条/页
    handleSizeChange(pageSize){
      this.searchParams.pageSize = pageSize;
      this.findBySearchValue();
    },
    // 点击1,2,3页数切换
    handleCurrentChange(pageNum){
      this.searchParams.pageNum = pageNum;
      this.findBySearchValue();
    },
  }
}
</script>

res.data.list:具体需要看数据所在的位置,这里的数据是位于data下的list数组内

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 基于 Spring BootMyBatis Plus和Vue的开发框架是现代Web应用开发的主要选择之一。Spring Boot是一个轻量级的Java开发框架,提供了快速构建独立应用程序所需的所有功能。它简化了传统的Spring应用程序开发过程,让开发者能够更专注于业务逻辑。 MyBatis Plus是一个对MyBatis进行封装的工具,提供了更简单、更方便的方式来操作数据库。它使用注解和代码生成器来减少开发时间,使得数据库操作更加高效和可维护。 Vue是一个流行的JavaScript框架,用于构建用户界面。它的特点是轻量级、易于学习和使用,并且具有非常高的性能。Vue可以与服务器端的后端框架(如Spring Boot)无缝集成,在前后端分离的项目中,提供了极佳的开发体验。 使用基于Spring BootMyBatis Plus和Vue的开发框架,开发者可以快速搭建一个完整的Web应用。首先,使用Spring Boot来创建后端应用,配置数据源和集成MyBatis Plus以简化数据库操作。然后,使用Vue来创建用户界面,通过REST API与后端进行通信。 这个开发框架的优点是集成了强大的Java后端和灵活的JavaScript前端,开发者可以使用多种技术栈来完成各种功能。同时,Spring Boot提供了很好的项目结构和配置管理,MyBatis Plus简化了数据库操作,Vue提供了丰富的界面组件和开发工具,整合后的开发框架提供了高效、可维护和可扩展的开发环境。 总之,基于Spring BootMyBatis Plus和Vue的开发框架提供了一种现代化、高效和灵活的Web应用开发方式。它适用于各种规模的项目,可以提高开发效率,降低维护成本,并且提供良好的开发体验。 ### 回答2: 基于Spring BootMyBatis Plus和Vue框架的开发可以实现一个完整的前后端分离的应用。以下是具体方面的解释: 1. Spring Boot是一个快速开发的Java框架,可以轻松搭建后端服务器。它提供了自动配置、快速开发等功能,大大简化了Java后端开发的步骤。 2. MyBatis Plus是一个基于MyBatis的增强工具,可以简化与数据库的交互。它提供了更简单的API、更强大的查询功能和代码生成等特性,可以极大提高后端开发的效率。 3. Vue是一个流行的前端框架,用于构建用户界面。它具有简单易学、灵活和高性能等特点,可以帮助我们编写交互式、响应式的前端应用。 基于这三个框架的组合,可以实现前后端完全分离的开发模式。后端使用Spring Boot搭建服务器,处理业务逻辑,并与数据库进行交互。MyBatis Plus可以简化与数据库的交互,提供了更简单的CRUD操作和强大的查询功能。 前端使用Vue进行开发,可以实现灵活的用户界面。通过Restful API与后端进行通信,实现数据的交互。 总而言之,基于Spring BootMyBatis Plus和Vue的开发模式,可以高效地实现前后端分离的应用。后端使用Spring Boot提供服务,MyBatis Plus简化数据库交互,前端使用Vue构建用户界面。这种组合可以提高开发效率,让开发人员更专注于业务逻辑的实现。 ### 回答3: 基于Spring BootMyBatis Plus和Vue的开发,可以实现一个全栈的Web应用程序。 Spring Boot是一个基于Spring框架的快速开发工具,它简化了Spring项目的配置,提供了一套约定大于配置的开发模式。使用Spring Boot可以快速搭建一个Web应用程序的后端,处理数据层和业务逻辑。 MyBatis Plus是基于MyBatis框架之上的增强工具,它进一步简化了在Java应用程序中操作数据库的流程。MyBatis Plus提供了很多常用的功能和特性,如代码生成器、自动填充、分页插件等,可以极大地提高开发效率。 Vue是一种现代化的JavaScript框架,用于构建用户界面。它提供了一套响应式组件系统和强大的工具集,可以帮助开发者快速构建单页应用程序。Vue可以与其他后端技术,如Spring BootMyBatis Plus一起使用,实现前后端分离的开发模式。 在基于这些技术的开发过程中,可以将后端的数据处理和业务逻辑实现放在Spring Boot中,使用MyBatis Plus进行数据库操作。前端使用Vue构建用户界面,并通过异步请求与后端进行数据交互。通过这种方式,可以实现一个功能完善的全栈Web应用程序。 使用Spring BootMyBatis Plus可以快速搭建后端框架,并提供强大的数据库操作能力。而Vue作为前端框架,可以提供友好的用户界面和交互体验。通过这些技术的结合,可以实现高效、灵活的全栈开发,为用户提供优质的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值