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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- Mybatis-plus的service通用接口解读
- Mybatis-plus中IService接口的基本使用步骤
- MyBatis-Plus插件机制及通用Service新功能
- Mybatis-Plus接口BaseMapper与Services使用详解
- Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法
- 详解关于mybatis-plus中Service和Mapper的分析
- mybatis-plus批处理IService的实现示例
- MyBatis-Plus 通用IService使用详解
- mybatis-plus 自定义 Service Vo接口实现数据库实体与 vo 对象转换返回功能
相关文章
SpringBoot跨域Access-Control-Allow-Origin实现解析
这篇文章主要介绍了SpringBoot跨域Access-Control-Allow-Origin实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-12-12Java ThreadLocal详解_动力节点Java学院整理
ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,本文会详细的介绍一下,有兴趣的可以了解一下2017-06-06SpringCloud gateway+zookeeper实现网关路由的详细搭建
这篇文章主要介绍了SpringCloud gateway+zookeeper实现网关路由,本文通过图文实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-08-08
最新评论