mybatisplus中返回Vo案例分析

其他教程   发布日期:2023年08月27日   浏览次数:794

这篇文章主要介绍“mybatisplus中返回Vo案例分析”,在日常操作中,相信很多人在mybatisplus中返回Vo案例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”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)

  1. <select id="selectPageVo" resultType="com.DailyReportVo">
  2. select ss.realname submitterName, ss.title submitterTitle, sa.realname appraiserName , sa.title appraiserTitle, n.*
  3. from nst_daily_report n
  4. LEFT JOIN sys_user sa
  5. on n.appraiser_id = sa.id
  6. LEFT JOIN sys_user ss
  7. on n.submitter_id = ss.id
  8. <where>
  9. ${ew.sqlSegment}
  10. </where>
  11. </select>

3.service

  1. public interface IDailyReportService extends IService<DailyReport> {
  2. IPage<DailyReportVo> selectPageVo(IPage<DailyReportVo> page, Wrapper<DailyReportVo> queryWrapper);
  3. }
  1. @Service
  2. public class DailyReportServiceImpl extends ServiceImpl<DailyReportMapper, DailyReport> implements IDailyReportService {
  3. @Override
  4. public IPage<DailyReportVo> selectPageVo(IPage<DailyReportVo> page, Wrapper<DailyReportVo> queryWrapper) {
  5. return this.baseMapper.selectPageVo(page, queryWrapper);
  6. }
  7. }

4.controller

  1. @GetMapping(value = "/list")
  2. public Result<IPage<DailyReportVo>> queryPageList(DailyReport dailyReport,
  3. @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
  4. @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
  5. HttpServletRequest req){
  6. DailyReportVo dailyReportVo = new DailyReportVo();
  7. BeanUtils.copyProperties(dailyReportVo,dailyReport);
  8. Result<IPage<DailyReportVo>> result = new Result<>();
  9. QueryWrapper<DailyReportVo> queryWrapper = QueryGenerator.initQueryWrapper(dailyReportVo, req.getParameterMap());
  10. Page<DailyReportVo> page = new Page<>(pageNo, pageSize);
  11. IPage<DailyReportVo> pageList = dailyReportService.selectPageVo(page, queryWrapper);
  12. result.setSuccess(true);
  13. result.setResult(pageList);
  14. return result;
  15. }

以上就是mybatisplus中返回Vo案例分析的详细内容,更多关于mybatisplus中返回Vo案例分析的资料请关注九品源码其它相关文章!