mybatisplus中返回Vo的案例讲解
注意: mybatisplus内置的几个方法使用泛型限制了方法的返回类型,
所以实现返回Vo还是得自定义方法, 这个方法名尽量不要和原有的名字类似
(以免出问题), 采用mybatisplus就是想借用它的wrapper的便利.
另外, 如果不采用vo, 而是直接ss.realname submitterName, ss.title submitterTitle, sa.realname appraiserName , sa.title appraiserTitle加入为entity中属性(对这几个属性取消持久化 ), 然后直接修改page方法对应的xml, 这么做虽然可以返回你要的结果, 但是, 前端传入entity对象作为查询参数时, 假如这几个属性存在非空值, 那么mybatisplus会映射到sql中去, 这样sql就报错了, 因为数据库没这几个字段
(除非你禁止这几个参数的反序列化或者对mybatisplus wrapper 过滤掉这几个属性, 先不说fastjson的反序列化在这几个属性上用没有bug, 这样做会让代码不优雅,耦合也高, swagger ui也没写清楚, 所以还是采用vo的好)
1.定义Vo (extends 实体类然后加几个非持久化字段), 作为返回
—不用map作为返回的原因是, 对swagger-api不友好
2.xml 如下(就用mybaisplus, 不想用mybatis)
<select id="selectPageVo" resultType="com.DailyReportVo">
select ss.realname submitterName, ss.title submitterTitle, sa.realname appraiserName , sa.title appraiserTitle, n.*
from nst_daily_report n
LEFT JOIN sys_user sa
on n.appraiser_id = sa.id
LEFT JOIN sys_user ss
on n.submitter_id = ss.id
<where>
${ew.sqlSegment}
</where>
</select>
3.service
public interface IDailyReportService extends IService<DailyReport> {
IPage<DailyReportVo> selectPageVo(IPage<DailyReportVo> page, Wrapper<DailyReportVo> queryWrapper);
}
@Service
public class DailyReportServiceImpl extends ServiceImpl<DailyReportMapper, DailyReport> implements IDailyReportService {
@Override
public IPage<DailyReportVo> selectPageVo(IPage<DailyReportVo> page, Wrapper<DailyReportVo> queryWrapper) {
return this.baseMapper.selectPageVo(page, queryWrapper);
}
}
4.controller
@GetMapping(value = "/list")
public Result<IPage<DailyReportVo>> queryPageList(DailyReport dailyReport,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req){
DailyReportVo dailyReportVo = new DailyReportVo();
BeanUtils.copyProperties(dailyReportVo,dailyReport);
Result<IPage<DailyReportVo>> result = new Result<>();
QueryWrapper<DailyReportVo> queryWrapper = QueryGenerator.initQueryWrapper(dailyReportVo, req.getParameterMap());
Page<DailyReportVo> page = new Page<>(pageNo, pageSize);
IPage<DailyReportVo> pageList = dailyReportService.selectPageVo(page, queryWrapper);
result.setSuccess(true);
result.setResult(pageList);
return result;
}
到此这篇关于mybatisplus中返回Vo的文章就介绍到这了,更多相关mybatisplus返回Vo内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341