前言
这里要实现通过前端传入的查询条件进行模糊查询,同时涉及到多表查询
1. 解决方案
前端
在data中声明向后端传递的对象 queryParams
// 查询参数 queryParams: { pageNum: 1, pageSize: 10, subjectId: null, subjectEnglishname: null, subjectName: null, subjectIntro: null, iconPath: null, deleted: null, majorName: null }
前端执行方法 handleQuery() 通过 queryParams 传递查询条件
v-model="queryParams.subjectName" 对输入的数据与 subjectName 进行双向绑定
<el-form-item label="课程名称" prop="subjectName"> <el-input v-model="queryParams.subjectName" placeholder="请输入课程名称" clearable @keyup.enter.native="handleQuery" /> </el-form-item> // 操作按钮 <el-form-item> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> </el-form-item>
handleQuery 具体实现
此处的 queryParams 通过上述代码中 v-model 对 subjectName进行绑定
/** 搜索按钮操作 */ handleQuery() { this.queryParams.pageNum = 1 this.getList() }, /** 查询课程列表 */ getList() { this.loading = true listSubject(this.queryParams, this.queryParams.majorName).then(response => { this.subjectList = response.rows this.total = response.total this.loading = false }) }
listSubject() 方法
发送请求,同时携带 query 对象传递给后端用于查询操作
// 查询课程列表 export function listSubject(subject, major) { return request({ url: '/system/subject/listSubject', method: 'get', params: subject, major }) }
后端
前端传递的为空参数时将会查询全部课程
public TableDataInfo querySubjectInformation(Subject subject, Major major) { QueryWrapper<Subject> queryWrapper = new QueryWrapper<>(); List<Subject> list = new ArrayList<>(); // 前端传入关于majord的唯一参数为majorName if (major.getMajorName() != null) { startPage(); list = subjectService.listSubjectByMajorName(major.getMajorName()); } else { if (subject.getSubjectName() != null) { queryWrapper.like("subject_name", subject.getSubjectName()); } if (subject.getSubjectEnglishname() != null) { queryWrapper.like("subject_englishname", subject.getSubjectEnglishname()); } if (subject.getSubjectId() != null) { queryWrapper.eq("subject_id", subject.getSubjectId()); } if (subject.getDeleted() != null) { queryWrapper.eq("deleted", subject.getDeleted()); } startPage(); list = subjectService.list(queryWrapper); } // 打印list,用于调试 System.out.println(list); return getDataTable(list); }