怎么做浏览器网站,重庆装修公司有哪些,seo培训优化,网站建设与推广是什么意思分页关联查询
需求分析
有两张表w以及d#xff0c;需要w的一些字段以及d的一些字段在前端显示 此时就需要用到关联查询#xff0c;查询到的数据放入视图类#xff0c;显示在前端
项目结构 视图类
package com.wedu.modules.tain.entity.vo;import lombok.Data;import ja…分页关联查询
需求分析
有两张表w以及d需要w的一些字段以及d的一些字段在前端显示 此时就需要用到关联查询查询到的数据放入视图类显示在前端
项目结构 视图类
package com.wedu.modules.tain.entity.vo;import lombok.Data;import java.util.Date;Data
public class WarnVo {//传输给前端展示//idprivate Long id;//车间private String workshops;//设备编号private String deviceNumber;//设备名称private String deviceName;//设备型号private String deviceModel;//维保到期时间private Date tainEndTime;//预警时间private Date warnTime;//状态是否生成预警信息 是否被保养private int status;
}定义关联查询分页方法
首先在mapper接口中再定义分页的关联查询方法复用分页类pagequerywrapper组装where条件
Mapper
public interface TainWarnMapper extends BaseMapperTainWarn {IPageWarnVo selectWarnPage(IPageWarnVo page, Param(Constants.WRAPPER) QueryWrapperWarnVo wrapper);
}在对应xml内创建对应的关联查询
TainWarnMapper.xml
select idselectWarnPage resultTypecom.wedu.modules.tain.entity.vo.WarnVoselect w.id,d.workshops,d.device_number,d.device_name,d.device_model,w.warn_time,w.tain_end_time,d.statusfrom tain_warn w left join device don d.idw.device_id${ew.customSqlSegment}/select${ew.customSqlSegment}是MyBatis Plus提供的动态SQL语句拼接功能。 在使用MyBatis Plus进行数据库操作时可以通过Wrapper对象来构建查询条件。Wrapper对象可以通过链式调用的方式动态添加查询条件包括等于、大于、小于等各种条件。而${ew.customSqlSegment}就是Wrapper对象中自定义的SQL片段可以灵活地根据业务需求进行动态拼接。
service层
在service内写一个接口方法在impl内实现先新建一个查询每页显示10条再手动关闭sql优化避免查询总数的时候只查询主表再创建querywrapper对象写查询条件最后调用mapper接口的分页关联查询方法传入分页的查询和查询条件最后返回对象
ITainWarnService
public interface ITainWarnService extends IServiceTainWarn {PageUtils queryWarnPage(MapString, Object params);
}TainWarnServiceImpl Autowiredprivate TainWarnMapper tainWarnMapper;Overridepublic PageUtils queryWarnPage(MapString, Object params) {// 从参数中获取当前页码和每页大小//.toString() 从 params 集合中检索到的值转换为字符串格式//Integer.parseInt()将字符串解析为整数int current Integer.parseInt(params.get(page).toString());int pageSize Integer.parseInt(params.get(limit).toString());// 设置分页参数PageWarnVo page new Page(current,pageSize);//一定要手动关闭 SQL 优化不然查询总数的时候只会查询主表page.setOptimizeCountSql(false);QueryWrapperWarnVo qw new QueryWrapper();//组装查询条件 where status 1qw.eq(status,1);IPageWarnVo wp tainWarnMapper.selectWarnPage(page,qw);return new PageUtils(wp);}TainWarnController实现分页查询
和之前写的分页查询一模一样查询过程变了但最后和前端的交互是一样的 Autowiredprivate ITainWarnService iTainWarnService;GetMapping(/queryWarnMessage)public R queryWarnMessage(RequestParam MapString,Object params){PageUtils page iTainWarnService.queryWarnPage(params);return R.ok().put(page,page);}前端显示如图分页关联查询成功
根据id获取当前一行数据
在前端点击添加保养记录的时候获取这条数据的id根据当前点击数据的id查询warnVo实体类找到该条数据warnVo是w和d两张表关联查询的结果
TainWarnMapper
首先写一个接口传入id获取单行数据的实体类Param(id)写别名
Mapper
public interface TainWarnMapper extends BaseMapperTainWarn {WarnVo selectById(Param(id) Long id);
}在xml内写查询语句这里明确根据id查找可以直接写where不用高级查询querywrapper再拼接
select idselectById resultTypecom.wedu.modules.tain.entity.vo.WarnVo parameterTypejava.lang.Longselect w.id,d.workshops,d.device_number,d.device_name,d.device_model,w.warn_time,w.tain_end_time,d.statusfrom tain_warn w left join device don d.idw.device_idwhere w.id #{id}/selectITainWarnService
public interface ITainWarnService extends IServiceTainWarn {WarnVo selectById(Long id);
}TainWarnServiceImpl Overridepublic WarnVo selectById(Long id) {return tainWarnMapper.selectById(id);}TainWarnController //根据id拿出用户信息GetMapping(/info/{id})public R info(PathVariable(id) Long id){WarnVo warnVo iTainWarnService.selectById(id);return R.ok().put(warnVo,warnVo);}根据id查询结果可在network的response内看到
部分前端代码
script
export default {data() {return {dataForm: {id: 0,workshops: ,deviceNumber: ,deviceName: ,deviceModel: ,tainEndTime: ,warnTime: ,status: ,},dialogVisible: false,};},methods: {init(id) {this.dataForm.idid;this.dialogVisible true;this.$nextTick(() {this.$refs[dataForm].resetFields();});if (this.dataForm.id) {this.$http({url: this.$http.adornUrl(/tain/warn/info/${this.dataForm.id}),method: get,}).then(({ data }) {if (data data.code 0) {(this.dataForm.workshops data.warnVo.workshops),(this.dataForm.deviceNumber data.warnVo.deviceNumber),(this.dataForm.deviceName data.warnVo.deviceName),(this.dataForm.deviceModel data.warnVo.deviceModel),(this.dataForm.tainEndTime data.warnVo.tainEndTime),(this.dataForm.warnTime data.warnVo.warnTime),(this.dataForm.status data.warnVo.status);}});}},handleClose(done) {this.$confirm(确认关闭).then((_) {done();}).catch((_) {});},},
};
/script